代码之家  ›  专栏  ›  技术社区  ›  Kon

使用html.validatefor()helper在IE7中下拉客户端验证

  •  0
  • Kon  · 技术社区  · 14 年前

    我有一个奇怪的问题,关于在我的表单上验证下拉列表。一个下拉列表是状态列表,并用RequiredAttribute进行修饰:

    [Required(ErrorMessage="State is required.")]
    

    在视图中,下拉列表及其验证定义为:

    <%: Html.DropDownListFor(m => m.State, new SelectList(BusinessLayer.UsStates.GetList())) %>
    <% Html.ValidateFor(m => m.State); %>
    

    UsStates.GetList() 返回A List<string> . 我所有的客户端验证(包括下拉列表)在Firefox、Chrome甚至IE8中都能很好地工作。然而,在IE7中,它是断开的——即使在下拉列表中正确选择了状态(及其值),验证也会失败并说“状态是必需的”。

    解决了我的问题:

    IE7对每个选项的值属性没有呈现这一事实感到不高兴。因此,将列表传递到selectList()中并没有将其剪切。必须传入键/值对类型对象的列表,并传入DataValueField和DataTextField参数,如下所示:

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

    那真让人恼火……:)

    1 回复  |  直到 14 年前
        1
  •  1
  •   Kon    14 年前

    解决了我的问题:

    IE7对每个选项的值属性没有呈现这一事实感到不高兴。所以通过一个 List<string> 进入 SelectList() 没有切断它。必须传入键/值对类型对象的列表,并传入DataValueField和DataTextField参数,如下所示:

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

    那真让人恼火……:)