AutoEventWireup属性がに設定されている場合false、イベントは手動で接続する必要があります。Page_PreInitしかし、私は発砲することができないようです。ワイヤーアップを遅らせるのではないかと思いますが(すでに過ぎてしまったらPage_PreInit)、他にどこにワイヤーアップを配置すればよいかわかりません。
例えば...
protected override void OnInit(EventArgs e)
{
base.OnInit(e)
PreInit += new EventHandler(Page_PreInit);
Load += new EventHandler(Page_Load);
}
protected void Page_PreInit(object sender, EventArgs e)
{
Response.Write("Page_PreInit event fired!<br>"); //this is never reached
}
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("Page_Load event fired!<br>");
}
上記のコードは、「Page_Loadイベントが発生しました!」という結果になります。表示されていますが、からは何もありませんPage_PreInit。base.OnInit(e)ワイヤーアップの前と後の両方を試しましたが、効果はありませんでした。
ここに示されているグラフは、OnInitメソッドが実際にはPreInitイベントの後に来ることを示しています。それを念頭に置いて、私OnPreInitは同じことをオーバーライドして実行しようとしました---効果はありません。
ここでのMSDNの記事では、にAutoEventWireup設定されている場合false、イベントはオーバーライドされた状態で接続できると明示的に示されていますOnInit。彼らが使用している例はです。もちろん、それは私と同じように機能しますが、これがイベントPage_Loadでは機能しないように思われることについては言及していません。Page_PreInit
私の質問は、に設定さPage_PreInitれている場合、どうすればイベントを接続できますか?AutoEventWireupfalse
ページのコンストラクターを使用するなど、 MSDNページにリストされている代替手段があることを理解しています。彼らが提案するように具体的にどのように行うかを知りたいOnInitです。