У меня есть раскрывающийся список с множественным выбором, который позволяет вам выбрать столько значений, сколько вы хотите.Форма и проверка работают, как и ожидалось, но я заметил, что если у меня есть несколько «выбранных» вариантов множественного выбора (скажем, 5 выбранных), и после проверки форма завершается ошибкой, множественный выбор возвращает только 1 выбранный параметр после проверки.Кажется, проверка может вернуть только 1 значение, несмотря ни на что.Как получить форму для возврата всех выбранных значений после неудачной проверки формы?(скажем, все 5 выбранных)
Я попытался добавить специальную логику, которая передает массив категорий в перегрузку MultiSelect.Теоретически это должно работать, но, похоже, не отражает эти ценности в представлении?Каков наилучший подход для получения всех значений множественного выбора, которые будут возвращены после неудачной отправки проверки.
Я добавил несколько скриншотов, чтобы лучше понять, вместе с моим кодом контроллера и вида.
Перед отправкой ![Before Submission](https://i.stack.imgur.com/Pl0r1.png)
После отправки (обратите внимание на пропущенные поля категории отчета) ![After Submission](https://i.stack.imgur.com/VpJjP.png)
Контроллер
private void getReportCategoryList(int[] categoryIds){
//New Multi Select List. Gets all category combinations
var categories = db.Report_Category_NEW.Select(c => new
{
CategoryID = c.ReportCategoryID,
CategoryName = c.ReportCategory
}).OrderBy(c => c.CategoryName).ToList();
//Place Categories in ViewData for View()
if(categoryIds == null)
{
//If categoryIds is null, no categoryIds to pre populate
ViewData["Categories"] = new MultiSelectList(categories, "CategoryID", "CategoryName");
}
else
{
//If categoryIds is NOT null, pre populate the MultiSelectList using the categoryIds array
ViewData["Categories"] = new MultiSelectList(categories, "CategoryID", "CategoryName", categoryIds);
}
}
Просмотр
<div class="form-group">
@Html.LabelFor(model => model.Report_Category, "Report Category", htmlAttributes: new { @class = "control-label col-md-2 required" })
<div class="col-md-5">
@Html.DropDownList("CategoryIds", (MultiSelectList)ViewData["Categories"], new { multiple = "multiple", @class = "select2 form-control" })
@Html.ValidationMessageFor(model => model.CategoryIds, "", new { @class = "badge badge-default badge-danger text-left" })
</div>
</div>