3

Page PreRender イベントと OnPreRender のオーバーライドについては知っていましたが、Page_PreRender メソッドの存在は知りませんでした。最近、このフォーラムを調べているときに、両方の違いを見つけて検索しましたが、あまり得られませんでしたか?

ここに私の観察があります:

Label1 というラベルのページがあります。

シナリオ 1:

    protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = "load ";
    }
    protected override void OnPreRender(EventArgs e)
    {
        Label1.Text += "OnPreRender ";
        base.OnPreRender(e);
    }
    private void Page_PreRender(object sender, System.EventArgs e)
    {
        Label1.Text += "Page_PreRender ";
    }

Lable1 の値は次のようになります: load OnPreRender Page_PreRender

シナリオ 2:

        protected void Page_Load(object sender, EventArgs e)
        {
            Label1.Text = "load ";
        }
        protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);
            Label1.Text += "OnPreRender ";
        }
        private void Page_PreRender(object sender, System.EventArgs e)
        {
            Label1.Text += "Page_PreRender ";
        }

base.OnPreRender(e); の呼び出し順序に注意してください。

Lable1 の値は次のようになります: load Page_PreRender OnPreRender

base.OnPreRender(e) が Page_PreRender() を呼び出しているとしか言えませんが、プライベートではないでしょうか。

両方の違いと、どちらをいつ使用するかを教えてください。一般的に、どちらを使用する必要がありますか?

4

2 に答える 2

5

ページのメソッドは、イベントOnPreRenderを発生させる責任があります。Page_PreRender

Page_PreRender通常は、イベントをサブスクライブするだけです。

Page_PreRender イベントを安全に発生させる前に特別な処理を行う必要がある場合は、OnPreRender メソッドをオーバーライドして、 を呼び出す前に処理を行うことができますbase.OnPreRender(e)

于 2012-07-04T08:05:05.970 に答える
3

ページに が設定されている場合、Page_イベントが呼び出されAutoEventWireup="true"ます。これは、それらを作成し、明示的に接続せずに呼び出す方法です。

于 2012-07-04T07:45:44.763 に答える