我有一个奇怪的问题,关于验证我的窗体上的下拉列表。一个下拉的状态的列表,并装饰有RequiredAttribute标签:使用Html.ValidateFor()助手在IE7中下拉客户端验证
[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不快乐有关的事实,每一个选项的值属性未呈现。所以将List传递给SelectList()并没有削减它。你必须在键/值对类型对象的列表来传递,并通过在DataValueField和DataTextField参数,就像这样:
<%: Html.DropDownListFor(m => m.State, new SelectList(BusinessLayer.UsStates.GetList(), "Value", "Text"))%>
这是很烦人的.. :)
在IE7中的任何JavaScript错误? – 2010-06-21 16:34:06
不,没有。奇怪的... – Kon 2010-06-21 16:37:01