Функция Model.State clear () приводит к невозможности привязки выпадающего списка - PullRequest
0 голосов
/ 03 января 2019

Html helper dropdownlistfor не работает должным образом после использования ModelState.Clear () ;. Если я не включил ModelState.Clear () в моем контроллере, то он работает нормально

Это мой HTML код

 @Html.DropDownListFor(model => model.Vendors, new 
SelectList(Model.vendors_list, "Entry_Value", "Entry_Value", 
Model.Vendors), "--Please select Vendor--", new { @class = "form-control", 
required = "required" })

Удалить код как показано ниже

<input type="submit" value="Delete" formaction=@Url.Action("DeleteOthersPartList/" + i) formmethod="post" class="btn btn-danger" onclick="return confirm('Confirm Delete ?')" />

А это мой код контроллера при нажатии кнопки «Удалить»

public ActionResult DeleteOthersPartList(RegisterAL model, int id)
{
   try
   {
      PartList part = new PartList();
      part = model.part_information_List[id];
      model.part_information_List.Remove(part);

      ModelState.Clear();

      return View("New_RegistrationForm", model);
   }        
}

Прежде чем нажать кнопку удаления, я выбираю значение, как показано на рисунке ниже. enter image description here

После того, как я нажму на кнопку «Удалить», выпадающий список вернется к значению по умолчанию, а затем значение фактически не будет пустым (выделено значение для model.Vendors).

enter image description here

Причина, по которой я использую ModelState.Clear (), заключается в том, что Пример ниже: Я хотел бы удалить второй пункт, который является "asd3" enter image description here

Если я не добавил код ModelState.Clear (), то будет показан результат ниже. Он всегда удаляет последний элемент. Но я удаляю «asd3», но удаляю «asd4». Я знаю, что это может быть из-за проблемы с кодом контроллера, но я попытался отладить, на стороне контроллера, запись «asd3» удалена, но при возврате в View она появляется снова. Затем я добавляю код ModelState.Clear (), возвращаюсь к своему представлению, он может показать, что «asd3» удален, но это создает еще одну проблему с выпадающим списком, о котором я упоминал выше. enter image description here

Это я здесь ошибаюсь? Потому что, если я удалю код ModelState.Clear (), он будет работать нормально.

1 Ответ

0 голосов
/ 03 января 2019

Если вы получаете вашу модель из формы и хотите манипулировать данными, полученными из клиентской формы, и записать их обратно в представление, вам необходимо вызвать ModelState.Clear () для очистки значений ModelState. Но я не думаю, что вам нужно показывать какие-либо новые значения. Так что использовать это ничего не значит. На самом деле, он просто перестроил вашу модель и перешел к просмотру, а ваш выпадающий список связан с моделью, поэтому он потерял свое выбранное состояние и вернулся к значению по умолчанию. значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...