Поле множественного выбора категории не заполняется повторно после неудачной проверки при отправке - PullRequest
1 голос
/ 11 июня 2019

У меня есть раскрывающийся список с множественным выбором, который позволяет вам выбрать столько значений, сколько вы хотите.Форма и проверка работают, как и ожидалось, но я заметил, что если у меня есть несколько «выбранных» вариантов множественного выбора (скажем, 5 выбранных), и после проверки форма завершается ошибкой, множественный выбор возвращает только 1 выбранный параметр после проверки.Кажется, проверка может вернуть только 1 значение, несмотря ни на что.Как получить форму для возврата всех выбранных значений после неудачной проверки формы?(скажем, все 5 выбранных)

Я попытался добавить специальную логику, которая передает массив категорий в перегрузку MultiSelect.Теоретически это должно работать, но, похоже, не отражает эти ценности в представлении?Каков наилучший подход для получения всех значений множественного выбора, которые будут возвращены после неудачной отправки проверки.

Я добавил несколько скриншотов, чтобы лучше понять, вместе с моим кодом контроллера и вида.

Перед отправкой Before Submission

После отправки (обратите внимание на пропущенные поля категории отчета) After Submission

Контроллер

  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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...