Страница
asp.net во время выполнения проходит так называемый жизненный цикл, который состоит из различных событий. Первое из событий в жизненном цикле является событие PreInit.
Если мы хотим, чтобы часть кода выполнялась на странице раньше других блоков перед инициализацией элементов на странице, то этот код необходимо поместить в конструкцию:
Это верно для одной страницы asp.net. А если мы хотим дублировать это событие для всех страниц нашего сайта? Писать для каждой страницы данный код? Не наш метод=)
Посмотрим, есть ли решение.
Первое, что пришло в голову - это добавить наш Page_PreInit в MasterPage (шаблон для всех страниц сайта), но, как оказалось, в классе MasterPage нет поддержки метода Page_PreInit и, соответственно, написать Page_PreInit в MasterPage мы не можем.
Решение было следующим:
В папке App_Code был создан файл BasePage.cs со следующим кодом:
Ну, а теперь достаточно все страницы нашего сайта наследовать не от класса Page, а от класса BasePage и код будет выполняться на всех страницах.
Если мы хотим, чтобы часть кода выполнялась на странице раньше других блоков перед инициализацией элементов на странице, то этот код необходимо поместить в конструкцию:
protected void Page_PreInit(object sender, EventArgs e)
{
//Наш код
}
Это верно для одной страницы asp.net. А если мы хотим дублировать это событие для всех страниц нашего сайта? Писать для каждой страницы данный код? Не наш метод=)
Посмотрим, есть ли решение.
Первое, что пришло в голову - это добавить наш Page_PreInit в MasterPage (шаблон для всех страниц сайта), но, как оказалось, в классе MasterPage нет поддержки метода Page_PreInit и, соответственно, написать Page_PreInit в MasterPage мы не можем.
Решение было следующим:
В папке App_Code был создан файл BasePage.cs со следующим кодом:
//класс BasePage, наследуется от класса Page.
public class BasePage : Page
{
protected void Page_PreInit(object sender, EventArgs e)
{
//Код, который мы хотим дублировать на всех страницах сайта
}
//Подключаем событие
public BasePage()
{
PreInit += Page_PreInit;
}
}
Ну, а теперь достаточно все страницы нашего сайта наследовать не от класса Page, а от класса BasePage и код будет выполняться на всех страницах.
Этот прием известен с незапамятных времен.
ОтветитьУдалитьСм., например, М.Беллиньясо