В ASP.NET MVC 3 есть 2 вещи: проверка на стороне клиента и ненавязчивый JavaScript, которые управляются их соответствующими значениями в web.config:
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
Проверка на стороне клиента основана на плагине jquery.validate.js
вместе со скриптом jquery.validate.unobtrusive.js
от Microsoft. Когда вы включаете эти два сценария в представление, которое содержит HTML-форму, проверка на стороне клиента будет выполняться на основе правил аннотации данных, определенных вами в вашей модели. Когда вы посмотрите на сгенерированный исходный код HTML представления, вы заметите, что поля ввода имеют атрибуты HTML5 data-*
, которые содержат правила проверки. Затем ненавязчивый сценарий проверки Microsoft прочитает эти правила и настроит подключаемый модуль проверки jquery.
Ненавязчивый JavaScript отличается. Он основан на jquery. При использовании одного из Ajax.*
помощников HTML, таких как Ajax.ActionLink
, в ASP.NET MVC 3 эти помощники также генерируют атрибуты HTML5 data-*
на соответствующей привязке. Эти атрибуты затем интерпретируются сценарием Microsoft jquery.unobtrusive-ajax.js
, который необходимо включить в свою страницу, и AJAXify эти ссылки. Так, например, когда вы пишете:
@Ajax.ActionLink("UTC", "GetTime", new { zone = "utc" }, new AjaxOptions { UpdateTargetId = "myResults" })
это сгенерирует следующий HTML:
<a data-ajax="true" data-ajax-mode="replace" data-ajax-update="#myResults" href="/Home/GetTime?zone=utc">UTC</a>
Как вы теперь видите, вся информация о том, как выполнить запрос AJAX, содержится в DOM. Таким образом, у вас может быть отдельный файл javascript, в котором вы подписываетесь на событие click
этой ссылки, отправляете запрос AJAX на URL-адрес, содержащийся в атрибуте href
, а затем на основе значения атрибута data-ajax-mode
заменяете HTML-код некоторого контейнера с идентификатором, содержащимся в селекторе атрибута data-ajax-update
. И это именно то, что делает jquery.unobtrusive-ajax.js
. Просто он находится в отдельном файле, и ваша разметка и javascript независимы, чего не было в предыдущих версиях.
Таким образом, в отличие от ASP.NET MVC 1 и 2, в ASP.NET MVC 3 jQuery является фреймворком javascript по умолчанию, и на нем основаны HTML-помощники. Все скрипты MicrosoftAjax*
больше не используются.