Гайдар Магдануров - 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действие;
Интервал:
Закладка: