我有一个名为PageBase
的类继承自ASP.NET Page
。我想在PageBase
的{{1}}中做点什么。我的应用程序中的所有页面都在Page_Load
上完成了逻辑。
我正在考虑一种Page_Load
Page_Load
和其他页面运行的方式,而不必覆盖页面中的PageBase
。可能吗?
答案 0 :(得分: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对象触发时都会调用它。加载事件。