Я пытаюсь создать множественный выбор DropDownList
, который должен загружать данные из базы данных. Все поля должны быть выбраны при первом запуске. Я хотел бы отправить обратно в контроллер параметр List<string> selectedStatus
, сделать там несколько логов c и отправить обратно в представление по ViewData["Status"]
. Основываясь на этом параметре, я хотел бы заполнить множественный выбор DropDownList
... Я использую jQuery select2.
При первом запуске ничего не выбрано в DropDownList
. Когда я выбираю более одной опции и отправляю в контроллер, первое значение будет отображаться только в DropDownList
.
У меня есть метод Index со следующим кодом
var status = new List<SelectListItem>();
if (!selectedStatus.Any())
{
status = (from t in _context.Status
select new SelectListItem()
{
Text = t.Status,
Value = t.StatusId.ToString(),
Selected = true
}).OrderBy(t => t.Text)
.ToList();
}
else
{
status = (from t in _context.Status
select new SelectListItem()
{
Text = t.Status,
Value = t.StatusId.ToString(),
Selected = false
}).OrderBy(t => t.Text)
.ToList();
foreach (var item in status)
{
if (selectedStatus.Any(s => s.Contains(item.Value)) == true)
{
item.Selected = true;
}
}
}
ViewData["Status"] = status;
В Индекс
<form asp-controller="Home" asp-action="Index" method="get">
<div class="input-group">
@Html.DropDownList("selectedStatus", new SelectList((IEnumerable<SelectListItem>)ViewData["Status"], "Value", "Text"), htmlAttributes: new { @class = "form-control", multiple = "multiple", id = "select" })
<div class="input-group-append">
<button class="btn btn-outline-secondary" type="submit">Submit</button>
<a asp-action="Index" class="btn btn-outline-secondary">Cancel</a>
</div>
</div>
</form>
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");
<script>
$('select').select2({
theme: 'bootstrap4',
multiple: true,
});
</script>
}
}
Что я делаю не так? Чего там не хватает?
Спасибо.