2010-06-21 47 views
0

我有一个奇怪的问题,关于验证我的窗体上的下拉列表。一个下拉的状态的列表,并装饰有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"))%> 

这是很烦人的.. :)

+0

在IE7中的任何JavaScript错误? – 2010-06-21 16:34:06

+0

不,没有。奇怪的... – Kon 2010-06-21 16:37:01

回答

1

解决我的问题:

对于每个选项的value属性都没有呈现的事实,IE7并不高兴。所以将List<string>传入SelectList()并没有削减它。你必须在键/值对类型对象的列表来传递,并通过在DataValueField和DataTextField参数,就像这样:

<%: Html.DropDownListFor(m => m.State, new SelectList(BusinessLayer.UsStates.GetList(), "Value", "Text"))%> 

这是很烦人的.. :)