- •А.А. Волосевич
- •5.2. Веб-Приложение
- •5.3. Структура aspx-файла
- •1. Директивы страницы.
- •2. Серверные элементы управления и серверная форма.
- •5.4. Директивы страницы
- •5.5. Класс system.Web.Ui.Page
- •5.6. ЖИзненный цикл страницы
- •1. Подготовка страницы к выполнению
- •1.1. Событие PreInit
- •1.2. Событие Init
- •1.3. Событие InitComplete
- •1.4. Восстановление состояния представления
- •1.5. Обработка данных, принятых в результате возврата формы
- •1.6. Событие PreLoad
- •1.7. Событие Load
- •1.8. Обработка динамически созданных элементов управления
- •2. Обработка возврата формы
- •2.1. Обнаружение изменений в состоянии элементов управления
- •2.2. Обработка серверного события возврата формы
- •2.3. Событие LoadComplete
- •3.4. Генерирование разметки
- •3.5. Событие Unload
- •5.7. Общий обзор серверных элементов управления
- •5.8. Элементы управления html
- •5.9. Элементы управления web
- •5.10. Проверочные элементы управления
- •5.11. Эталонные страницы и темы
- •5.12. Некоторые приёмы работы со страницами
- •5.13. Связывание с данными
- •5.14. Списковые элементы управления
- •5.15. Элементы управления для Источников данных
- •5.16. Таблицы, связанные с данными
- •5.17. ОтоБражение отдельных записей
- •5.18. Конфигурирование веб-приложений
- •5.19. Инфраструктура обработки зАпроса
- •5.20. Веб-приложение и файл global.Asax
- •5.21. Модель поставщиков
- •5.22. Поддержка Сохранения Состояния
- •5.23. Кэширование в aSp.Net
- •5.24. Обеспечение безопасносТи в веб-приложениях
- •5.25. Управление членством и роЛями
- •5.26. Профили пользователя
- •5.27. Локализация и ресурсы
- •5.28. Пользовательские элементы управления
1.1. Событие PreInit
Это событие, введенное в ASP.NET 2.0, является точкой входа жизненного цикла страницы. Когда оно генерируется, ни эталонная страница, ни тема ещё не связаны с текущей страницей. Однако позиция прокрутки страницы уже восстановлена, доступны возвращенные клиентом данные, экземпляры всех элементов управления страницы созданы и инициированы значениями свойств по умолчанию, которые определяются в исходном файле .aspx. Это единственный момент, когда можно программным способом задать для текущей страницы эталонную страницу и тему. Данное событие доступно только для страницы. Свойства IsCallback, IsCrossPagePostback и IsPostback к этому моменту уже установлены.
1.2. Событие Init
Теперь эталонная страница и тема уже связаны с текущей страницей, и изменить их невозможно. Метод ProcessRequest() класса Page перебирает в цикле все дочерние элементы управления, давая каждому из них шанс инициализировать свое состояние с учетом текущего контекста. У каждого дочернего элемента управления есть метод OnInit(), который и вызывается. Каждому дочернему элементу управления присваивается контейнер имен и идентификатор, если они не указаны в файле .aspx.
Событие Init вначале достигает дочерних элементов управления, а уж потом самой страницы. На этом этапе страница и ее элементы управления обычно начинают загрузку определенных составляющих своего состояния. Состояние представления пока еще не восстановлено.
1.3. Событие InitComplete
Данное событие (оно также введено в ASP.NET 2.0) сигнализирует об окончании стадии инициализации. Между событиями Init и InitComplete страница производит только одну операцию: включает режим отслеживания изменений в состоянии представления. Эта функция обеспечивает элементам управления возможность сохранить те значения, которые программно добавляются в коллекцию ViewState. Если для какого-то из элементов управления данная функция отключена, любые добавленные им в коллекцию ViewState значения между возвратами формы утрачиваются. Все элементы управления включают режим отслеживания состояния представления сразу после того, как будет сгенерировано событие Init, и страница ‑ не исключение. (Ведь, по сути, она тоже является элементом управления.)
1.4. Восстановление состояния представления
Если страница обрабатывается по причине возврата формы (её свойство IsPostBack содержит значение true), восстанавливается содержимое скрытого поля __VIEWSTATE клиентской страницы. В этом поле хранится состояние представления всех элементов управления, записанное туда в конце выполнения предыдущего запроса. Общее состояние представления страницы является своего рода контекстом вызова и содержит состояние всех ее элементов управления, в последний раз переданное браузеру.
На данном этапе каждый элемент управления получает возможность обновить свое текущее состояние, сделав его таким, каким оно было во время выполнения предыдущего запроса. События не генерируются, а если необходимо выполнить некую обработку, можно переопределить метод LoadViewState(), определенный как защищенный и виртуальный в классе Control.