我的视图模型定义了必须显示为组合框的属性。属性定义是:
[required] public int Processor { get; set; }
我使用DropDownListFor渲染组合框:
<%=Html.DropDownListFor(r => r.Processor,Model.Processors,Model.Processor)%>
Model.Processors包含IEnumerable< SelectListItem>一个特殊项目定义为:
var noSelection = new SelectListItem { Text = String.Empty,Value = "0" };
现在我需要添加验证到我的组合框,以便用户必须选择不同的值,然后’noSelection’。我希望对requiredAttribute进行一些配置,但是它没有默认值设置。
解决方法
这个怎么样:
[required] public int? Processor { get; set; }
接着:
<%= Html.DropDownListFor( x => x.Processor,"-- select processor --" ) %>
并在您的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 } ... }
现在您不再需要手动添加noSelection项目。只需使用正确的DropDownListFor超载。