Почему на главной странице нет события 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>

Последовательность события будет как ниже;

  1. Пользовательский контроль init
  2. Мастер страница init
  3. Содержание страницы init

  4. Загрузка содержимого страницы LOAd

  5. Загрузка главной страницы LOAd
  6. Загрузка пользовательского элемента управления LOAd

  7. Визуализация содержимого страницы

  8. Главная страница перед рендерингом
  9. Пользовательский контроль Render

Для более подробной информации с примером, пожалуйста, смотрите ссылку ниже;

http://getmscode.blogspot.in/2014/11/sequence-of-events-in-master-page-and.html

Другие вопросы по тегам