1. ホーム
  2. asp.net

[解決済み] Page_Loadの呼び出しとその方法について教えてください。

2022-03-04 06:36:52

質問

Page_Loadは仮想メソッドではありません。何がこのメソッドを呼び出し、どのようにそれを行うのでしょうか?リフレクションなのか、それとも他の手法なのでしょうか?また、この方法でどれだけのイベントが処理されるのでしょうか?

また、オーバーロードされたOnLoadやPage_Loadで処理することが望ましいのでしょうか?これらはどのように違うのでしょうか?

どのように解決するのですか?

ASP.NET には "AutoEventWireup" と呼ばれる機能があります。 EventHandler のような名前で署名します。 Page_Load で、ランタイムは親ページからあなたのクラスのメソッドにイベントを配線してくれます。 基本的に、ランタイムはあなたに代わってこれを行います。

this.Load += this.Page_Load;

ここで、AutoEventWireupを無効にして、これらのイベントハンドラをページ内に自分で作成するのがよいでしょう。 OnInit メソッドをオーバーライドするか、あるいは単に親ページの OnLoad メソッドを使用します。

編集(以下OPのコメントに対して) このプロセスはボタンのクリックなどは対象外ですが、流れは似ています。

のようなメソッドが必要です。 MyButton_Click を明示的にイベントハンドラを作成しなくても動作するようにするためには OnClick 属性は、aspxファイル内のコントロールに次のように設定します。

<asp:button 
    id="MyButton"
    onClick="MyButton_Click"
    runat="server" />

これは、ASP.NETにボタンのクリックデリゲートを作成させ、それをボタンの Click イベントが発生します。