关于验证表单上的下拉列表,我有一个奇怪的问题。一个下拉列表是状态列表,并使用RequiredAttribute:
进行修饰[Required(ErrorMessage="State is required.")]
在视图中,下拉列表及其验证定义为:
<%: Html.DropDownListFor(m => m.State, new SelectList(BusinessLayer.UsStates.GetList())) %>
<% Html.ValidateFor(m => m.State); %>
UsStates.GetList()
返回List<string>
。
我的所有客户端验证(包括下拉菜单)都可以在Firefox,Chrome甚至IE8中完美运行。但是,在IE7中,它已被破坏 - 即使在下拉列表中正确选择了一个状态(及其值显然),验证也会失败,并说“状态是必需的。”
解决了我的问题:
IE7对于未呈现每个选项的value属性这一事实并不满意。所以将List传递给SelectList()并没有削减它。您必须传入键/值对类型对象的列表,并传入DataValueField和DataTextField参数,如下所示:
<%: Html.DropDownListFor(m => m.State, new SelectList(BusinessLayer.UsStates.GetList(), "Value", "Text"))%>
那太烦人了.. :)
答案 0 :(得分:1)
解决了我的问题:
IE7对于未呈现每个选项的value属性这一事实并不满意。所以将List<string>
传递给SelectList()
并没有削减它。您必须传入键/值对类型对象的列表,并传入DataValueField和DataTextField参数,如下所示:
<%: Html.DropDownListFor(m => m.State, new SelectList(BusinessLayer.UsStates.GetList(), "Value", "Text"))%>
那太烦人了.. :)