Спонсор: Microsoft
Опубликован: 30.01.2013 | Доступ: свободный | Студентов: 1198 / 140 | Длительность: 17:23:00
Теги: .net, ajax, asp, www, интранет
Лекция 5:

Построение приложений на основе веб-форм ASP.NET Web Forms

Модель обратного вызова

Платформа ASP.NET Web Forms, по аналогии с разработкой настольных приложений, содержит модель событий, которые генерируются каждый раз при обработке страницы. Элементы страницы также содержат ряд событий, которые можно использовать для построения своего приложения. Однако, нужно четко понимать, что при работе веб-приложения код страницы генерируется на сервере, а отображается на клиенте. Поэтому необходим механизм, который, например, при нажатии кнопки на клиентской стороне уведомит об этом сервер для того, чтобы последний мог сгенерировать событие и обработать его. По этой причине, при нажатии на кнопку, страница формирует HTTP-запрос к серверу и отправляет данные с помощью метода POST на сервер. В этом случае сервер может понять, что форма инициировала взаимодействие с ним и сгенерировать и обработать нужную последовательность действий.

При выполнении указанных действий, пользователь в момент нажатия на кнопку увидит процесс загрузки той же самой страницы заново. При этом, возможно, часть данных на странице будет обновлена. Фактически, при выполнении подобных действий страница будет перезагружена "сама на себя". Этот процесс можно представить схематически следующим образом.


Процесс отправки данных на эту же страницу и обработки данных на сервере называется моделью обратного вызова (postback). Модель обратного вызова позволяет разрабатывать страницы веб-приложения так же, как разрабатываются формы при разработке настольных приложений.

Для того, чтобы описанный выше процесс смог выполнятся, страница в ASP.NET Web Forms представляет собой большую HTML-форму. Это учитывается при генерации исходного HTML-кода страницы, и все элементы страницы заключены в тег <form>.


Эта форма всегда указывает на саму себя и использует метод POST. Использование именно этого HTTP-метода обусловлено тем, что в этом случае все данные будут отправлены на сервер в теле HTTP-запроса, что удобно при наличии большого количества элементов управления на странице. Страница ASP.NET Web Forms не может содержать еще дополнительные HTML-формы – все взаимодействия с сервером выполняются в рамках приведенной выше формы.

Для выполнения обратного вызова в составе страницы присутствуют дополнительные элементы – скрытые поля "__EVENTTARGET" и "__EVENTARGUMENT", а также функция на языке JavaScript "__doPostBack".


Скрытые поля на странице предназначены для указания источника обратного вызова и его аргументов. В качестве источника вызова обычно выступает элемент управления, который инициировал обратный вызов, например, кнопка. Функция JavaScript "__doPostBack" предназначена для осуществления обратного вызова. Как видно из исходного HTML-кода страницы, эта функция присваивает скрытым полям необходимые значения и выполняет отправку формы на сервер. Поскольку HTML-форма содержит все элементы страницы, включая указанные выше скрытые поля, они также будут переданы серверу для обработки. Анализируя состояние этих полей, сервер может определить, какой именно элемент управления осуществил обратный вызов.

При генерации страницы на стороне сервера можно определить, в каком режиме происходит загрузка страницы – это может быть первое обращение к странице или обратный вызов страницы, когда страница перезагружается после взаимодействия пользователя с элементами управления. Для этих целей базовый класс Page содержит свойство IsPostBack. Можно воспользоваться этим свойством и несколько изменить логику, выполняемую при обработке страницы. Например, при первом обращении к странице можно обратиться к базе данных, получить данные и отобразить на странице, а при обратном вызове не делать этого – нужные данные уже будут содержаться на странице в поле ViewState.


Таким образом, модель обратного вызова в ASP.NET Web Forms позволяет абстрагироваться от существующих принципов HTML-форм и строить веб-приложения подобно тому, как строятся настольные приложения. При этом всю работу по генерации событий, обработке реакции пользователя и формировании представления возьмет на себя платформа ASP.NET Web Forms.

Краткие итоги

Для разработки веб-приложений аналогично тому, как разрабатываются настольные приложения, используется модель обратного вызова. При обратном вызове на стороне клиента выполняется заранее предопределенная JavaScript-функция, которая заполняет нужными значениями скрытые поля формы и отправляет эту форму на сервер. Сервер способен отследить выполняется ли первая загрузка страницы, или выполняется обратный вызов. Если в данный момент выполняется обратный вызов, то на стороне сервера будут сгенерированы соответствующие события для элементов управления. Отследить в каком режиме происходит загрузка страницы (обычное обращение к странице или обратный вызов) можно с помощью свойства IsPostBack, которое присутствует в базовом классе страницы – Page.

Марина Воробьева
Марина Воробьева
Виктория Ткаченко
Виктория Ткаченко

Проигрыватель не работает. После нажатия кнопки Play ничего не происходит.

Андрей Коробейников
Андрей Коробейников
Россия, Новосибирск, Сибирский государственный университет телекоммуникаций и информатики, 1999
Вадим Трунов
Вадим Трунов
Россия