Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core
AJAX (Асинхронный JavaScript и XML) представляет собой технологию гибкого взаимодействия между клиентом и сервером. Благодаря ее использованию мы можем осуществлять асинхронные запросы к серверу без перезагрузки всей страницы. Правда, в настоящее время все больше вместо формата XML используется формат JSON для взаимодействия между клиентом и сервером.
Применительно к ASP.NET MVC использование AJAX вылилось в целую концепцию под названием "ненавязчивого AJAX" и
ненавязчивого JavaScript (unobtrusive Ajax/JavaScript). Смысл этой концепции заключается в том, что весь необходимый код
JavaScript используется не на самой веб-странице, а помещается в отдельные файлы с расширением *.js. А затем с помощью тега
<script>
мы в веб-станице ссылаемся на данный файл кода.
Таким образом мы отделяем визуализацию от логики приложения. Что имеет свои плюсы. Так, выделение скрипта в отдельный загружаемый файл увеличивает производительность сайта, поскольку файл сохраняется в кэше и затем от туда подгружается.
Во-первых, соответствующие настройки должны быть указаны в файле Web.config:
<appSettings> <add key="webpages:Version" value="3.0.0.0" /> <add key="webpages:Enabled" value="false" /> <add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" /> </appSettings>
Во-вторых, нам надо подключить соответствующие файлы JavaScript:
@Scripts.Render("~/scripts/jquery-1.10.2.js") @Scripts.Render("~/scripts/jquery.unobtrusive-ajax.js")
Если у нас в проекте отсуствует библиотека jquery.unobtrusive-ajax.js, то мы ее опять же можем добавить через NuGet:
Первый файл - общая библиотека jQuery. Второй файл (jquery.unobtrusive-ajax.js) подключает к приложению функциональность Ajax-хелперов, например, Ajax-форм. Главное не забыть, подключить основную библиотеку jQuery перед остальными файлами, так как все остальные скрипты, как правило, зависят от нее.
Для осуществления ajax-запросов в ASP.NET MVC присутствует такая функциональность, как ajax-хелперы:
Ajax.ActionLink: создает гиперссылку на действие контроллера, по нажатию на которую происходит ajax-запрос к этому действию
Ajax.RouteLink: похож на хелпер Ajax.ActionLink, только ссылка создается на определенный маршрут, а не на действие контроллера
Ajax.BeginForm: создает html-форму, которая отправляет ajax-запросы к определенному действию определенного контроллера
Ajax.BeginRouteForm: похож на Ajax.BeginForm, только ajax-запросы направляются не к действию контроллера, к по определенному маршруту
Ajax.GlobalizationScript: создает ссылку на скрипт, который содержит информацию о культуре
Ajax.JavaScriptStringEncode: кодирует строку для использования в JavaScript
Наиболее часто используются Ajax.ActionLink и Ajax.BeginForm, поэтому далее мы рассмотрим эти хелперы.