У меня есть страница с 2 формами. У одного из них есть выпадающий список:
<form ...>
<%: Html.DropDownListFor(x => Model.NewForm.FormId, Model.Forms)%>
<%: Html.ValidationMessageFor(x => Model.NewForm.FormId, "*")%>
<input type="submit" value="Add" />
</form>
Свойство NewForm модели:
public class AddFormViewModel
{
[Required]
[DisplayName("Form Id:")]
public int? FormId { get; set; }
}
Я заметил, что когда раскрывающийся список пуст, аргумент 'form' всегда равен нулю, а ModelState всегда действителен.
[HttpPost]
public ActionResult AddForm([Bind(Prefix="NewForm")]AddFormViewModel form)
{
if (ModelState.IsValid)
{
... save
}
else
{
... show validation error
}
return ...
}
Когда раскрывающийся список не пуст, все работает, как ожидалось, «form» не является нулевым.
Значение раскрывающегося списка не отправляется, когда оно пустое, это поведение по умолчанию, но в любом случае, как сделать проверку работоспособной?
Некоторые идеи:
1) Я могу добавить свойство для просмотра модели, которое будет скрытым вводом на странице только для того, чтобы механизм связывания модели работал;
2) Пользовательская модель переплета
Какие у вас идеи?