Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
210
Добавлен:
10.05.2015
Размер:
20.41 Mб
Скачать

6.2.1.1. Общие этапы жизненного цикла страницы

В целом страница проходит через этапы, описанные в табл. 6.1. Кроме этапов жизненного цикла страницы существуют этапы приложения, которые выполняются до и перед запросом, но не являются обязательными для страницы.

Таблица 6.1. Этапы жизненного цикла страницы

Этап

Описание

Запрос страницы

Запрос страницы происходит перед началом жизненного цикла страницы. При запросе страницы пользователем ASP.NET определяет, нужно ли обрабатывать и компилировать страницу (до начала жизненного цикла страницы), или отправить в ответ на запрос кэшированную версию страницы, не запуская ее обработку.

Запуск

На начальном этапе устанавливаются свойства страницы, например Request и Response. На этом этапе страница также определяет, является ли запрос обратной передачей или новым запросом, и устанавливает свойство IsPostBack. Кроме этого, на этом этапе устанавливается свойство страницы UICulture.

Инициализация страницы

Во время инициализации страницы элементы управления страницы являются доступными, устанавливаются все свойства элементов управления UniqueID. На странице также применяются темы. Если текущий запрос является обратным запросом, данные обратного запроса не загружены, а значения свойств элементов управления не восстановлены к значениям в состоянии просмотра.

Загрузка

Во время загрузки, если текущий запрос является обратным запросом, в свойства элементов управления будут переданы данные, восстановленные из состояния просмотра и состояния управления.

Проверка

Во время проверки вызывается метод Validate всех проверяющих элементов управления, который устанавливает свойство IsValid отдельных проверяющих элементов управления и страницы.

Обработка событий обратного запроса

Если запрос является обратным, вызывается любой из обработчиков событий.

Отрисовка

Перед отрисовкой производится сохранение состояния просмотра страницы и всех элементов управления. На этапе отрисовки страница вызывает метод Render для каждого элемента управления, предоставляя модуль записи текста, который записывает полученные данные в OutputStream свойства страницы Response.

Выгрузка

Выгрузка вызывается после завершения отрисовки страницы, отправки клиенту и готовности к удалению. На данном этапе свойства страницы, например Response и Request, выгружаются, производится очистка.

6.2.1.2. События жизненного цикла

На каждом этапе жизненного цикла страницы она вызывает события, которые могут быть использованы для управления выполнением собственного кода. В случае элементов управления обработчик событий привязывается к событию при помощи атрибутов типа onclick, или в коде.

Страницы также поддерживают автоматическую обработку: ASP.NET производит поиск методов с соответствующими именами и автоматически выполняет эти методы при возникновении определенных событий. Если атрибут AutoEventWireup в директиве @Page установлен в значение true (или не установлен, так как он имеет значение true по умолчанию), события страницы автоматически привязываются к методам, которые используют правила именования Page_event, например Page_Load и Page_Init..

Таблица 6.2 показывает события жизненного цикла страницы, которые используются наиболее часто. Могут существовать и другие события, но они почти не используются в сценариях обработки страниц. Вместо этого они в большинстве случаев используются серверными элементами управления на странице ASP.NET для своей инициализации и отображения.

Таблица 6.2. События жизненного цикла страницы

Событие страницы

Типичные случаи использования

PreInit

Событие используется:

  • С помощью свойства IsPostBack нужно проверить, обрабатывается ли страница в первый раз.

  • Создание или повторное создание динамических элементов управления.

Init

Возникает после инициализации всех элементов управления и применения параметров обложки. Это событие используется для чтения или инициализации свойств элемента управления.

InitComplete

Вызывается объектом Page. Это событие используется для обработки заданий, требующих завершения всех инициализаций.

PreLoad

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

Load

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

События элементов управления

Эти события используются для обработки определенными событиями в элементах управления, например Button события элемента управления Click или TextBox события TextChanged.

LoadComplete

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

PreRender

До события:

  • Объект Page вызывает EnsureChildControls для каждого элемента управления и для страницы.

  • Каждый связанный элемент управления, свойство которого DataSourceID установлено, вызывает свой метод DataBind. Событие PreRender происходит для каждого элемента управления на странице. Это событие используется для внесения окончательных изменений на странице или в ее элементах управления.

SaveStateComplete

До этого события ViewState сохраняется для страницы и всех элементов управления. Все изменения на странице или в ее элементах управления на данном этапе будут проигнорированы. Эти задачи используются для сохранения состояния просмотра без внесения изменений в элементы управления.

Render

Это не событие; вместо этого на данном этапе обработки объект Page вызывает этот метод для каждого элемента управления. Все серверные Веб-элементы управления ASP.NET обладают методом Render, который записывает разметку элемента управления, отправляемую клиенту. Обычно во время создания пользовательских элементов управления при выводе разметки элемента управления этот метод переопределяется. Однако если пользовательский элемент управления содержит только стандартные серверные элементы управления ASP.NET и не содержат пользовательской разметки, переопределять метод Render не требуется. Пользовательский элемент управления (файл с расширением ASCX) содержит отрисовку по умолчанию, таким образом, нет необходимости отрисовывать элемент управления явным образом.

Unload

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

Достаточно подробно жизненный цикл страницы и серверных элементов управления, а также порядок обработки событий представлен на рис. 6.3.

Рис. 6.3.  Жизненный цикл страницы ASP

Источник: ASP.NET 2.0 Page LifeCycle [13]