Проверка ввода MV3 — IE8 и IE9 ведут себя по-разному

Я использую DataAnnotations для проверки полей ввода в приложении MVC3. Я использую проверки регулярных выражений. Я получаю сообщения проверки в пользовательском интерфейсе для IE8 и IE9. Но я замечаю разницу, когда нажимаю кнопку «Сохранить» даже после того, как проверка на стороне клиента не удалась. IE9 держит меня на стороне клиента. Однако в IE8 управление переходит к действию контроллера, и мне нужно иметь TryValidateModel на стороне контроллера, чтобы исключить ошибки проверки.

Кто-нибудь знает, почему IE8 выполняет обход сервера?

Изменить: добавление кода. Это входит в cshtml.

    @using (Html.BeginForm("Person", "Account", FormMethod.Post))
    {
       <span class="resultError" id="resultError">
       @Html.ValidationMessageFor(model => model.Name, "Name should not contain special characters")  
       </span>
       <table>
         <tr>
          <td class="editor-label">Name:
          </td>
          <td class="editor-field">@Html.EditorFor(model => model.Name)
          </td>
        </tr>
       </table>
       <input type="submit" name="btnKey" value="Save" />
    }

Это частичный класс, использующий DataAnnotation. Класс Person управляется EF. Поэтому мне нужно создать класс метаданных для проверки.

    [MetadataType(typeof(personMetadata))]
    public partial class person: EntityObject
    {
      public class personMetadata
      {
        [Required]
        [RegularExpression(@"[A-Za-z0-9]+")]       
        public object Name { get; set; }
      }
    }

Изменить: добавление файлов javascript, на которые есть ссылки. "~/Scripts/jquery.validate.min.js" "~/Scripts/jquery.validate.unobtrusive.min.js"


person susen    schedule 21.06.2011    source источник
comment
Да, я знаю, почему это происходит. Вам просто нужно показать свой код.   -  person Darin Dimitrov    schedule 21.06.2011
comment
@susen, какую библиотеку проверки на стороне клиента вы используете? Вы включили правильные сценарии?   -  person Darin Dimitrov    schedule 21.06.2011
comment
Да - у меня есть необходимые скрипты. Проверка на стороне клиента работает. Мой вопрос заключается в том, когда я нажимаю кнопку «Сохранить», когда в поле «Имя» есть недопустимое значение. IE8 переносит меня к действию в контроллере. IE9 остается там.   -  person susen    schedule 21.06.2011
comment
@susen, да, это происходит из-за того, что у вас есть какая-то ошибка javascript или некоторые из ваших клиентских сценариев не указаны должным образом. Можете ли вы показать, на какие клиентские сценарии вы ссылались и как вы их используете?   -  person Darin Dimitrov    schedule 21.06.2011
comment
@Darin - я не вижу ошибки js. Я полагал, что jquery.validate и jquery.validate.unobstrusive — это все, что вам нужно для проверки на стороне клиента. Как в IE 8, так и в 9 проверка происходит, как и ожидалось. Но на самом деле меня беспокоит кнопка «Сохранить».   -  person susen    schedule 21.06.2011
comment
@Дарин, у меня точно такая же проблема. В Chrome и Firefox проверка jquery работает, но в IE8 она проходит весь путь до сервера. Я не могу определить ошибку.   -  person Kenji Kina    schedule 22.06.2011
comment
перейдите по этой ссылке. Это работает для меня. sitepoint.com/forums/   -  person user1134478    schedule 19.07.2012


Ответы (1)


В моем случае, который очень похож на ваш, я обнаружил, что обновление jquery.validate.js было бы правильным. Существует сообщенная ошибка в версии 1.8.0 проверки jquery для IE 7, 8 и 9.

После установки последней версии все заработало.

person Kenji Kina    schedule 22.06.2011
comment
Спасибо Кенсай - это сработало как шарм. Я скачал Validation 1.8.1, и он работает именно так, как я и ожидал. - person susen; 22.06.2011