Гайдар Магдануров - ASP.NET MVC Framework
- Название:ASP.NET MVC Framework
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2010
- Город:Санкт-Петербург
- ISBN:978-5-9775-0462-1
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Гайдар Магдануров - ASP.NET MVC Framework краткое содержание
Описаны модель и доступ к данным (технологии LINQ, Entity Framework и др.), контроллеры, представление и интерфейс приложения, механизмы маршрутизации и Ajax-функциональность. Уделено внимание вопросам тестирования веб-приложений. Рассмотрены особенности применения ASP.NET MVC 2 в Visual Studio 2010.
Для программистов
ASP.NET MVC Framework - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Рис. 7.4. Запрос подтверждения при использовании параметра Confirm
□ HttpMethod
— устанавливает тип HTTP-запроса (GET или POST), который будет использоваться при формировании асинхронного запроса. Может содержать одно из двух значений Get или Post, по умолчанию установлено в Post;
□ InsertionMode
— свойство задает одно из значений одноименного перечисления InsertionMode
: Replace, InsertBefore, InsertAfter
. Значение по умолчанию Replace
. Данное свойство устанавливает метод включения данных из ответа от сервера в элемент разметки: перезапись значения элемента, добавление до содержимого или после него. Данное свойство используется совместно со свойством UpdateTargetId
, указывающим идентификатор элемента разметки, в которое будет записано значение результата ответа от сервера;
□ LoadingElementId
— задает идентификатор элемента разметки, который должен быть отображен во время Ajax-запроса. Использование данного свойства приведет к тому, что указанный элемент будет показан во время запроса, а затем скрыт. Использование этого свойства имеет смысл для демонстрации пользователю анимации ожидания во время продолжительных запросов;
□ OnBegin
— задает наименование JavaScript-функции, которая должна быть вызвана непосредственно перед отправкой асинхронного запроса на сервер;
□ Oncomplete
— задает наименование JavaScript-функции, которая должна быть вызвана сразу после того, как запрос был завершен, и до того, как результат запроса был записан в элемент разметки. Не имеет значения, был ли завершен запрос удачно или нет, функция, указанная через Oncomplete
, все равно будет вызвана. Данная функция будет вызвана до onFailure
или onSuccess
. Если требуется, чтобы результат не был записан в элемент разметки, то функция, указанная в Oncomplete
, должна вернуть false;
□ OnFailure
— задает наименование JavaScript-функции, которая должна быть вызвана в случае, когда асинхронный запрос завершился с ошибкой;
□ OnSuccess
— задает наименование JavaScript-функции, которая должна быть вызвана в случае, когда асинхронный запрос завершился успешно;
□ updateTargetid
— задает идентификатор элемента разметки, в который должен быть записан результат асинхронного запроса на сервер. Вместе с этим параметром может быть использован параметр InsertionMode
, который указывает, каким именно способом должны быть записаны данные в элемент разметки;
□ url
— устанавливает значение адреса сервера, куда следует отправить запрос. Свойство использовать не обязательно, когда класс AjaxOptions
применяется в Ajax.BeginForm
и Ajax.ActionLink
, где действие и контроллер задают данные адреса. В случае если Url
все же будет указан, он переопределит значения, определенные в этих методах.
Класс AjaxOptions
и его свойства используются во вспомогательных методах Ajax.BeginForm
и Ajax.ActionLink
для тонкой настройки асинхронного запроса и его параметров, а также действий, осуществляемых в ответ на изменение состояния запроса. Например, в следующием фрагменте кода AjaxOptions
используется для задания ряда параметров при вызове Ajax.ActionLink
:
function OnError() {
alert("Произошла ошибка!");
}
Нажмите на ссылку для получения времени<^span>
Ajax.BeginForm
Вспомогательный метод Ajax.BeginForm
, в зависимости от реализации, содержит набор из следующих параметров:
□ actionName
— указывает наименование действия, которое следует вызвать в запросе, в случае, когда используется вариант метода без указания контроллера, вызывается действие контроллера текущего контекста;
□ controllerName
— указывает наименование контроллера (сокращенное, без суффикса Controller
), в котором следует искать и вызвать указанное в параметре actionName
действие;
□ routeValues
— указывает объект, содержащий параметры для механизма маршрутизации;
□ ajaxOptions
— указывает экземпляр класса AjaxOptions
с заданными свойствами, которые определяют параметры асинхронного запроса и могут определять ряд JavaScript-функций, реагирующих на изменение состояния запроса;
□ htmlAttributes
— набор значений пользовательских атрибутов для тега form
, которые должны быть помещены в разметку формы.
Ajax-расширения MVC Framework могут значительно облегчить работу по созданию Ajax-функционала как для форм, так и для простых запросов. Например, следующий код описывает создание простой Ajax-формы:
Введите логин и пароль, чтобы продолжить.
Введите логин:
Введите пароль:
Здесь с помощью вспомогательного метода Ajax.BeginForm
создается стандартная форма авторизации с двумя текстовыми полями для ввода логина и пароля и кнопкой отправки данных. Обратите внимание на параметры Ajax.BeginForm
: во-первых, указывается LoginForm
— наименование действия, которое должно вызваться в ответ на отправку данных с формы, во-вторых, с помощью класса AjaxOptions
задается специальный параметр UpdateTargetId
, который указывает на элемент, ответственный за отображение результата запроса. То есть, если запрос вернет данные, они будут отображены, в нашем случае, с помощью элемента span с идентификатором loginStatus
.
Как можно заметить, создание всего Ajax-функционала не потребовало у нас ни строчки JavaScript, не требуется от нас и понимание различий реализаций поддержки Ajax разными браузерами. Все это скрытно реализуют библиотеки MicrosoftAjax.js и MicrosoftMvcAjax.js, делая за разработчика всю рутинную работу по организации работы с асинхронными запросами. Если мы взглянем на исходный код, который сгенерирует подсистема Ajax в MVC Framework для нашего кода, то сможем убедиться, что генерируется достаточно много автоматического кода. Далее представлено определение формы, которое создано автоматически для нашего примера:
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.
Ajax.ActionLink
Вспомогательный метод Ajax.ActionLink
, в зависимости от реализации, содержит набор из нескольких следующих параметров:
□ linkText
— текст, который будет рендериться в виде значения гиперссылки;
□ actionName
— указывает наименование действия, которое следует вызвать в запросе, в случае, когда используется вариант метода без указания контроллера, вызывается действие контроллера текущего контекста;
□ controllerName
— указывает наименование контроллера (сокращенное, без суффикса Controller
), в котором следует искать и вызвать указанное в параметре actionName
действие;
Интервал:
Закладка: