Применение серверных элементов управления
Серверные элементы управления можно добавлять к странице как декларативно, так и программно. Но нужно понимать жизненный цикл страницы. Код окна локального приложения Windows остается в памяти компьютера до тех пор, пока пользователь не закроет это окно. Web-страница загружается в память сервера при получении запроса от пользователя. Она анализирует поступившую информацию, генерирует необходимый код, отдает его HTTP и автоматически выгружается из памяти.
Такой порядок существования страницы установлен для экономии ресурсов и масштабируемости (стремления обработать как можно больше пользователей). Он называется жизненным циклом страницы. Жизненный цикл страницы сопровождается рядом знаковых событий, для которых можно создать обработчики. Для динамического добавления элементов управления на страницу нужно знать, в обработчике какого события страница готова принять свои дочерние элементы.
Пример исследования жизненного цикла страницы
Давайте на практике исследуем порядок генерации событий на протяжении жизненного цикла страницы. Названия событий можно получить даже из пустой .aspx -страницы, если включить трассировку в исполняющей среде ASP.NET.
- Создайте в выбранном каталоге пустой проект Web-приложения LifeCycleEvents командой File/New/Web Site оболочки Visual Studio 2005
- В панели Solution Explorer (или в меню Website ) вызовите контекстное меню для узла проекта и выполните команду Add New Item. Настройте диалоговое окно мастера так Обратите внимание, что мы добавляем страницу с отделенным кодом (включен флажок Place code in separate file ).
-
Запустите добавленную страницу на выполнение щелчком на кнопке Start Debugging.
Появится окно с предупреждающим сообщением, что для режима отладки нужно создать конфигурационный файл Web.Config с параметром включения отладки
-
Щелкните на кнопке OK и оболочка создаст конфигурационный файл в корневом каталоге проекта
Автоматически запустится встроенный броузер с пустым рендерингом.
-
Закройте броузер и вновь его запустите командой оболочки File/View in Browser (или одноименной командой контекстного для страницы меню)
В строке адреса броузера будет примерно следующий текст
-
Замените в строке адреса броузера блок Default.aspx на Trace.axd и пошлите запрос примерно с таким адресом
http://localhost:1206/LifeCycleEvents/Trace.axd
Сервер выдаст сообщение об ошибке с предложением внести в конфигурационный файл предлагаемый блок кода
<configuration> <system.web> <trace enabled="true"/> </system.web> </configuration>
- Скопируйте строку <trace enabled="true"/> параметра, включающего трассировку страниц приложения, и поместите ее в файл Web.Config проекта в секцию <system.web>, где уже находится параметр <compilation debug="true"/>, включающий отладку
- Запустите приложение и в строке адреса броузера вновь введите вызов страницы Trace.axd
Появится страница трассировочных данных, в которой щелчком на гиперссылке View Details (показать подробности) мы получим распечатку трассировки нашей пустой страницы. В секции Trace Information приведен список событий, генерируемых страницей на разных этапах жизненного цикла
Этот порядок следования события не меняется. Некоторые из них, пока еще страница способна принимать управляющий код, можно перехватить в обработчиках. Давайте для тренировки сделаем это.