Книга: ASP.NET MVC Framework
Ajax.BeginForm
Ajax.BeginForm
Вспомогательный метод Ajax.BeginForm
, в зависимости от реализации, содержит набор из следующих параметров:
? actionName
— указывает наименование действия, которое следует вызвать в запросе, в случае, когда используется вариант метода без указания контроллера, вызывается действие контроллера текущего контекста;
? controllerName
— указывает наименование контроллера (сокращенное, без суффикса Controller
), в котором следует искать и вызвать указанное в параметре actionName
действие;
? routeValues
— указывает объект, содержащий параметры для механизма маршрутизации;
? ajaxOptions
— указывает экземпляр класса AjaxOptions
с заданными свойствами, которые определяют параметры асинхронного запроса и могут определять ряд JavaScript-функций, реагирующих на изменение состояния запроса;
? htmlAttributes
— набор значений пользовательских атрибутов для тега form
, которые должны быть помещены в разметку формы.
Ajax-расширения MVC Framework могут значительно облегчить работу по созданию Ajax-функционала как для форм, так и для простых запросов. Например, следующий код описывает создание простой Ajax-формы:
<% using(Aj ax.BeginForm("LoginForm",
new AjaxOptions{UpdateTargetId="loginStatus"})) {
%>
<dl>
<dt>
<span>Введите логин и пароль, чтобы продолжить.</span>
</dt>
<dt>Введите логин:</dt>
<dd><%= Html.TextBox("login")%></dd>
<dt>Введите пароль:</dt>
<dd><%= Html.TextBox("password")%></dd>
<dt><input type="submit" value="Войти"/></dt>
</dl>
<% } %>
Здесь с помощью вспомогательного метода Ajax.BeginForm
создается стандартная форма авторизации с двумя текстовыми полями для ввода логина и пароля и кнопкой отправки данных. Обратите внимание на параметры Ajax.BeginForm
: во-первых, указывается LoginForm
— наименование действия, которое должно вызваться в ответ на отправку данных с формы, во-вторых, с помощью класса AjaxOptions
задается специальный параметр UpdateTargetId
, который указывает на элемент, ответственный за отображение результата запроса. То есть, если запрос вернет данные, они будут отображены, в нашем случае, с помощью элемента span с идентификатором loginStatus
.
Как можно заметить, создание всего Ajax-функционала не потребовало у нас ни строчки JavaScript, не требуется от нас и понимание различий реализаций поддержки Ajax разными браузерами. Все это скрытно реализуют библиотеки MicrosoftAjax.js и MicrosoftMvcAjax.js, делая за разработчика всю рутинную работу по организации работы с асинхронными запросами. Если мы взглянем на исходный код, который сгенерирует подсистема Ajax в MVC Framework для нашего кода, то сможем убедиться, что генерируется достаточно много автоматического кода. Далее представлено определение формы, которое создано автоматически для нашего примера:
<form action="/Home/LoginForm" method="post"
onclick="Sys.Mvc.AsyncForm.handleClick(this, new Sys.UI.DomEvent(event));"
onsubmit="Sys.Mvc.AsyncForm.handleSubmit(this,
new Sys.UI.DomEvent(event), {
insertionMode:Sys.Mvc.InsertionMode.replace,
updateTargetId:'loginStatus'
});">
Как можно видеть, вызов Ajax.BeginForm
сгенерировал код для функционала, который предлагают библиотеки MicrosoftAjax.js и MicrosoftMvcAjax.js.
- AjaxOptions
- Ajax.ActionLink
- Ajax-функционал в MVC Framework
- Building Responsive Applications Using AJAX
- AJAX Control Toolkit
- AJAX- Enabling a Page Using the ScriptManager Control
- Calling WCF Services from an AJAX Page
- Лекция 10. Основы приложений AJAX
- 19.6. Реализация Ajax в библиотеке jQuery
- 19.6.2. Вспомогательные функции поддержки Ajax
- 19.6.3. Функция jQuery.ajax()
- 19.6.4. События в архитектуре Ajax