asp.net mvc中的空下拉列表验证

时间:2010-12-12 16:38:15

标签: asp.net-mvc-2

我有一个包含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)自定义模型装订器

你有什么想法?

1 个答案:

答案 0 :(得分:0)

怎么样

[HttpPost]
public ActionResult AddForm(AddFormViewModel form)
{
    if (form!= null && ModelState.IsValid)
    {
      ... save
    }
    else
    {
        ... show validation error
    }

    return ...
}