ASP.MVC3 по умолчанию включена проверка на стороне клиента?

На моей странице макета у меня есть следующие ссылки на файлы Javascript проверки:

 <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"> </script>
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")"type="text/javascript"> </script>
         <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")"type="text/javascript"></script>

Мои объекты украшены атрибутами проверки, такими как

[Required(ErrorMessage ="Please enter a customer name")]
    public string CustomerName { get; set; }

Тогда, на мой взгляд, у меня есть сообщения проверки, указанные после полей обновления, например

<div class="label-for">@Html.LabelFor(model => model.CustomerName)</div>
<div class="editor">@Html.EditorFor(model => model.CustomerName)</div>
@Html.ValidationMessageFor(model => model.CustomerName) 

Проверка работает, но не на стороне клиента, насколько я понимаю, сообщения об ошибках должны отображаться, когда одно из полей остается пустым после перехода в другое поле, требуется ли что-нибудь еще для проверки на стороне клиента? работает?


person Liam    schedule 07.07.2011    source источник
comment
Установлены ли для параметров приложения ClientValidationEnabled и UnobtrusiveJavaScriptEnabled значение true в файле web.config? (Они должны быть по умолчанию).   -  person Mattias Jakobsson    schedule 07.07.2011
comment
Я устанавливаю для них значение true в методе запуска глобального файла ASAX, однако вместо этого я попытаюсь сделать это в веб-конфигурации.   -  person Liam    schedule 07.07.2011
comment
Да, они включены в веб-конфигурации, как вы правильно сказали, это должно быть по умолчанию.   -  person Liam    schedule 07.07.2011
comment
Хмм хорошо. Тогда это должно работать. Не могли бы вы попробовать очень простой пример?   -  person Mattias Jakobsson    schedule 07.07.2011
comment
Не уверен, что я могу сделать иначе, чем то, что я сделал выше? Я добавил обязательный атрибут к свойствам объекта, сообщения проверки добавляются в представление, а сценарии добавляются в раздел заголовка страницы макета. Сообщения проверки отображаются только после нажатия кнопки сохранения??   -  person Liam    schedule 07.07.2011
comment
Я бы открыл новый проект и протестировал его с минимальным количеством кода и посмотрел, сможете ли вы найти разницу между этим и вашим кодом.   -  person Mattias Jakobsson    schedule 07.07.2011


Ответы (3)


IIRC были некоторые несовместимости между версиями jquery и jquery.validate. Похоже, вы используете старую версию jquery 1.4.4. Попробуйте обновиться до последней. Например, установите ASP Обновите инструменты .NET MVC 3 и создайте новый проект ASP.NET MVC в Visual Studio, который предоставит вам правильные версии следующих скриптов: jquery, jquery.validate и jquery.validate.unobtrusive.

person Darin Dimitrov    schedule 08.07.2011

Может быть, это сработает: убедитесь, что в вашем файле web.config вы установили для «ClientValidationEnabled» значение «True».

<appSettings>
    <add key="ClientValidationEnabled" value="true"/>
</appSettings>

ПРИМЕЧАНИЕ. В веб-проекте MVC3 было два файла web.config: один в папке «Просмотр», другой в корневом веб-проекте. убедитесь, что один в корне не переопределяет другой.

person matmat    schedule 08.07.2011

Проверка jQuery не имеет ничего общего с вашим механизмом проверки. Возможно, Microsoft.Ajax.Validation должен нести ответственность. Но чтобы использовать jquery.validation, вы должны написать код. Это все. Он ничего не делает из коробки.

person Saeed Neamati    schedule 07.07.2011
comment
странно, как в книге Стива Сандерсона Pro Asp.Net MVC3, в которой говорится, что проверка на стороне клиента MVC основана на Jquery и включена по умолчанию при добавлении соответствующих сценариев - person Liam; 07.07.2011
comment
Ну, я не знал об этой книге и сам не видел ее в действии. Кажется, это просто теория. - person Saeed Neamati; 07.07.2011
comment
-1, вы можете использовать проверку jquery со встроенной проверкой в ​​asp.net mvc. Нет необходимости писать код проверки на стороне клиента вручную. - person Mattias Jakobsson; 07.07.2011
comment
-1, потому что я использовал это в MVC3, и комментарий совершенно неверен. Вы ДЕЙСТВИТЕЛЬНО используете jQuery, и некоторые из DataAnnotations имеют встроенные валидаторы. - person Tridus; 07.07.2011