在DropDownList中验证所需的选择

Lad*_*nka 18 validation asp.net-mvc asp.net-mvc-2

我的视图模型定义了必须显示为组合框的属性.属性定义是:

[Required]
public int Processor { get; set; }
Run Code Online (Sandbox Code Playgroud)

我正在使用DropDownListFor渲染组合框:

<%=Html.DropDownListFor(r => r.Processor, Model.Processors, Model.Processor)%>
Run Code Online (Sandbox Code Playgroud)

Model.Processors包含IEnumerable<SelectListItem>一个特殊项目定义为:

var noSelection = new SelectListItem
  {
    Text = String.Empty,
    Value = "0"
  };
Run Code Online (Sandbox Code Playgroud)

现在我需要在我的组合框中添加验证,以便用户必须选择不同的值,然后选择'noSelection'.我希望有一些配置,RequiredAttribute但它没有默认值设置.

Dar*_*rov 26

这个怎么样:

[Required]
public int? Processor { get; set; }
Run Code Online (Sandbox Code Playgroud)

然后:

<%= Html.DropDownListFor(
    x => x.Processor, Model.Processors, "-- select processor --"
) %>
Run Code Online (Sandbox Code Playgroud)

在你的POST动作中

[HttpPost]
public ActionResult Index(MyViewModel model)
{
    if (ModelState.IsValid)
    {
        // the model is valid => you can safely use model.Processor.Value here:
        int processor = model.Processor.Value;
        // TODO: do something with this value
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

现在您不再需要手动添加noSelection项目了.只需使用正确的DropDownListFor重载.

  • 这不会在客户端验证:( (5认同)