PageBaseASP.NET から継承するという名前のクラスがありますPage。PageBaseで何とかしたいPage_Load。私のアプリケーションのすべてのページには、Page_Load. ページをオーバーライドすることなく、のページと他のページPage_Loadの両方を実行する方法を考えています。可能ですか?PageBasePage_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.
}
}
}
編集
仕組みは次のとおりです。
LoadSystem.Web.UI.Pageは、PageBaseクラスにそのまま継承される宣言されたパブリックイベントです。これは、イベントにハンドラーをいくつでもアタッチできるイベントであるため、Loadイベントが発生するたびに、それぞれが呼び出されて実行されます。このPageBaseクラスでは、イベントハンドラルーチンをLoadイベントにアタッチしています。これは、ベースバージョンを明示的に呼び出す必要があるOnLoad保護ルーチンを継承する代わりにそれを行うためのより良い方法です。実際のPageオブジェクトが作成/インスタンス化されると、基本クラスオブジェクトが最初に作成され、次にサブクラスがインスタンス化されます。したがって、PageBaseオブジェクトが構築されると、イベントハンドラーがLoadイベントにアタッチされ、Pageオブジェクトが起動するたびに呼び出されます。 Loadイベント。
于 2010-07-07T06:04:07.297 に答える