如果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
事件连接起来?AutoEventWireup
false
我了解MSDN 页面上列出了替代方案,例如使用页面的构造函数。我想具体了解如何按照他们的建议进行操作OnInit
。