Почему на главной странице нет события PreInit в ASP.NET?
Ниже приведена последовательность событий, возникающих при объединении главной страницы со страницей содержимого:
Content page PreInit event.
Master page controls Init event.
Content controls Init event.
Master page Init event.
Content page Init event.
Content page Load event.
Master page Load event.
Master page controls Load event.
Content page controls Load event.
Content page PreRender event.
Master page PreRender event.
Master page controls PreRender event.
Content page controls PreRender event.
Master page controls Unload event.
Content page controls Unload event.
Master page Unload event.
Content page Unload event.
Но почему главная страница не имеет PreInit
событие в ASP.NET
?
3 ответа
На главной странице нет метода PreInit.
Есть несколько альтернатив, которые вы можете принять.
1. Создайте общий базовый класс страниц для всех других страниц, чтобы наследовать, установите свойство темы в этом классе; http://www.odetocode.com/Articles/450.aspx
Главные страницы наследуют: System.Web.UI.MasterPage
и в соответствии с дизайном этого MasterPage
класс не такой PreInit
Событие определено для этого класса.
Главные страницы являются производными от класса Control, как показано в иерархии ниже:
System.Object
System.Web.UI.Control
System.Web.UI.TemplateControl
System.Web.UI.UserControl
System.Web.UI.MasterPage
Поэтому, как можно догадаться, мастер-страницы ведут себя и, по сути, обрабатываются как элементы управления и имеют события, аналогичные другим элементам управления сервера asp.net.
Одно из предложенных чтений this
,
Аналогично модели UrlMapping, создайте класс, который должен быть сгенерирован IHttpModule, затем добавьте его ссылку на Web.config.
public class MasterPageModule: IHttpModule
{
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(context_BeginRequest);
}
void context_BeginRequest(object sender, EventArgs e)
{
//your code
}
}
<httpModules>
<addname="MasterPageModule"type="MasterPageModule"/>
</httpModules>
Последовательность события будет как ниже;
- Пользовательский контроль init
- Мастер страница init
Содержание страницы init
Загрузка содержимого страницы LOAd
- Загрузка главной страницы LOAd
Загрузка пользовательского элемента управления LOAd
Визуализация содержимого страницы
- Главная страница перед рендерингом
- Пользовательский контроль Render
Для более подробной информации с примером, пожалуйста, смотрите ссылку ниже;
http://getmscode.blogspot.in/2014/11/sequence-of-events-in-master-page-and.html