PageBase
ASP.NET から継承するという名前のクラスがありますPage
。PageBase
で何とかしたいPage_Load
。私のアプリケーションのすべてのページには、Page_Load
. ページをオーバーライドすることなく、のページと他のページPage_Load
の両方を実行する方法を考えています。可能ですか?PageBase
Page_Load
2571 次
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オブジェクトが起動するたびに呼び出されます。 Loadイベント。
于 2010-07-07T06:04:07.297 に答える