Основными событиями у страниц и элементов управления в ASP.NET являются инициализация (Init), загрузка (Load), рендеринг (PreRender) и выгрузка (Unload).
В процессе разработки страницы последовательность возникновения событий на страницах обычно не имеет значения. Однако при создании обработчиков событий, которые зависят от доступности определенных элементов управления, следует иметь общее представление о последовательности возникновения событий на главной странице и странице содержимого.
Однажды я столкнулся с проблемой последовательности возникновения событий и решил разобраться с этим. Теперь понимание того, когда какое событие возникает, позволяет лучше организовывать код.
Ниже приведена последовательность возникновения событий при объединении главной страницы (MasterPage) со страницей содержимого (WebPage).
- событие PreInit страницы содержимого;
- событие Init элементов управления главной страницы;
- событие Init элементов управления страницы содержимого;
- событие Init главной страницы;
- событие Init страницы содержимого;
- событие Load страницы содержимого;
- событие Load главной страницы;
- событие Load элементов управления главной страницы;
- событие Load элементов управления страницы содержимого;
- событие PreRender страницы содержимого;
- событие PreRender главной страницы;
- событие PreRender элементов управления главной страницы;
- событие PreRender элементов управления страницы содержимого;
- событие Unload элементов управления главной страницы;
- событие Unload элементов управления страницы содержимого;
- событие Unload главной страницы;
- событие Unload страницы содержимого.
Следует помнить, что в событии Init серверные элементы еще не доступны, это лишь начало их жизненного цикла. А событие Unload происходит уже после визуализации, поэтому в нем мы уже никак на элементы повлиять не можем. В этом событии мы должны закрыть все открытые файлы и подключения к базам данных (если мы еще этого не сделали ранее).
Еще хочу добавить, что события инициализации возникают, начиная с самого внутреннего и заканчивая самым внешним элементом управления. Все остальные события возникают в обратном порядке. Обратите внимание, что главная страница объединяется со страницей содержимого и обрабатывается как ее элемент управления.
Теперь, зная больше о возникновении событий, вы можете более грамотно разрабатывать приложения на ASP.NET.