1

我有一个名为PageBase从 ASP.NET 继承的类PagePageBase我想在's做点什么Page_Load。我的应用程序中的所有页面都在其Page_Load. 我正在考虑一种无需在页面中覆盖即可运行的方式和其他Page_Load页面。有可能吗?PageBasePage_Load

4

1 回答 1

7

是的,这是可能的。只需在构造函数中附加 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.
        }
    }
}

编辑

这是它的工作原理。

Load是一个声明的公共事件System.Web.UI.Page,在 PageBase 类中按原样继承。由于这是一个事件,您可以在事件上附加尽可能多的处理程序,每当Load引发事件时,它们中的每一个都将被调用/执行。在PageBase该类中,我们将一个事件处理程序例程附加到 Load 事件。这是更好的方法,而不是继承需要显式调用基本版本的 OnLoad 受保护例程。当实际的 Page 对象被创建/实例化时,首先创建基类对象,然后实例化子类,所以当 PageBase 对象被构造时,事件处理程序被附加到 Load 事件上,每当 Page 对象触发时都会调用该事件加载事件。

于 2010-07-07T06:04:07.297 回答