Asp.net mvc 2 asp.net mvc中的空下拉列表验证
我有一页,上面有两张表格。其中一个有一个下拉列表:Asp.net mvc 2 asp.net mvc中的空下拉列表验证,asp.net-mvc-2,Asp.net Mvc 2,我有一页,上面有两张表格。其中一个有一个下拉列表: <form ...> <%: Html.DropDownListFor(x => Model.NewForm.FormId, Model.Forms)%> <%: Html.ValidationMessageFor(x => Model.NewForm.FormId, "*")%> <input type="submit" value="Add" /> </form>
<form ...>
<%: Html.DropDownListFor(x => Model.NewForm.FormId, Model.Forms)%>
<%: Html.ValidationMessageFor(x => Model.NewForm.FormId, "*")%>
<input type="submit" value="Add" />
</form>
我注意到,当下拉列表为空时,“form”参数始终为null,ModelState始终有效
[HttpPost]
public ActionResult AddForm([Bind(Prefix="NewForm")]AddFormViewModel form)
{
if (ModelState.IsValid)
{
... save
}
else
{
... show validation error
}
return ...
}
当下拉列表不为空时,一切正常,“表单”不为空
下拉列表的值为空时不发送,这是默认行为,但无论如何,如何使验证工作
一些想法:
1我可以添加一个属性来查看模型,这将是页面上的一个隐藏输入,只是为了使模型活页夹工作
2定制模型活页夹
你的想法是什么?怎么样
[HttpPost]
public ActionResult AddForm(AddFormViewModel form)
{
if (form!= null && ModelState.IsValid)
{
... save
}
else
{
... show validation error
}
return ...
}
当您说为空时,您的意思是选择列表中没有选项,或者没有选择任何选项?如果您向选择列表中添加一个默认值,且值=null text=select选项,则null将导致默认ModelBinder使选择成为必需。是的,我知道,但我不想要“--select--”选项。我决定使用一个隐藏的财产。
[HttpPost]
public ActionResult AddForm(AddFormViewModel form)
{
if (form!= null && ModelState.IsValid)
{
... save
}
else
{
... show validation error
}
return ...
}