我有一个包含2个表单的页面。其中一个有一个下拉列表:
<form ...>
<%: Html.DropDownListFor(x => Model.NewForm.FormId, Model.Forms)%>
<%: Html.ValidationMessageFor(x => Model.NewForm.FormId, "*")%>
<input type="submit" value="Add" />
</form>
Model的NewForm属性是:
public class AddFormViewModel
{
[Required]
[DisplayName("Form Id:")]
public int? FormId { get; set; }
}
我注意到当下拉列表为空时,'form'参数始终为null,ModelState始终有效。
[HttpPost]
public ActionResult AddForm([Bind(Prefix="NewForm")]AddFormViewModel form)
{
if (ModelState.IsValid)
{
... save
}
else
{
... show validation error
}
return ...
}
当下拉列表不为空时,一切都按预期工作,'form'不为空。
下拉列表的值在空时不发送,这是默认行为,但无论如何,如何使验证工作?
一些想法:
1)我可以添加一个属性来查看模型,这将是页面上的隐藏输入,只是为了使模型绑定器工作;
2)自定义模型装订器
你有什么想法?
答案 0 :(得分:0)
怎么样
[HttpPost]
public ActionResult AddForm(AddFormViewModel form)
{
if (form!= null && ModelState.IsValid)
{
... save
}
else
{
... show validation error
}
return ...
}