Наличие двух Page_Load без переопределения - PullRequest
1 голос
/ 07 июля 2010

У меня есть класс с именем PageBase, унаследованный от ASP.NET Page.Я хочу сделать что-то в PageBase Page_Load.Все страницы в моем приложении имеют свою логику на Page_Load.Я думаю о способе, которым Page_Load обеих PageBase и других страниц работает без необходимости переопределять Page_Load в страницах.Это возможно?

1 Ответ

7 голосов
/ 07 июля 2010

Да, это возможно.Просто прикрепите обработчик Page_Load в конструкторе.Вот как вы это делаете.

/// <summary>
/// Your PageBase class.
/// </summary>
public class PageBase : System.Web.UI.Page
{
    /// <summary>
    /// Initializes a new instance of the Page class.
    /// </summary>
    public Page()
    {
        this.Load += new EventHandler(this.Page_Load);
    }

    /// <summary>
    /// Your Page Load
    /// </summary>
    /// <param name="sender">sender as object</param>
    /// <param name="e">Event arguments</param>
    private void Page_Load(object sender, EventArgs e)
    {
        try
        {
        }
        catch
        {
             //handle the situation gracefully.
        }
    }
}

EDIT

Вот как это работает.

Load - это публичное событие, объявленное в System.Web.UI.Page, которое наследуетсякласс PageBase как есть.Поскольку к этому событию вы можете присоединить столько же, сколько и обработчик к событию, каждое из них будет вызываться / выполняться при каждом возникновении события Load.В классе PageBase мы присоединяем подпрограмму обработчика событий к событию Load.Это лучший способ сделать это вместо того, чтобы наследовать защищенную подпрограмму OnLoad, где вам нужно явно вызвать базовую версию.Когда фактический объект Page создается / создается, сначала создается объект базового класса, затем создается экземпляр подкласса, поэтому, когда создается объект PageBase, обработчик событий присоединяется к событию Load, которое будет вызываться всякий раз, когда запускается объект Page.Событие загрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...