Выпадающая проверка на стороне клиента в IE7 с использованием помощника Html.ValidateFor () - PullRequest
0 голосов
/ 21 июня 2010

У меня странная проблема, связанная с проверкой выпадающих списков в моей форме.Один раскрывающийся список представляет собой список состояний и содержит атрибут 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"))%>

Это было довольно раздражающим ..:)

1 Ответ

1 голос
/ 21 июня 2010

Решил мою проблему:

IE7 не обрадовался тому факту, что атрибут value каждого параметра не отображался.Таким образом, передача List<string> в SelectList() не сократила его.Вы должны передать список объектов типа пары ключ / значение и передать параметры DataValueField и DataTextField, например:

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

Это было довольно неприятно ..:)

...