gpt4 book ai didi

c# - 手动连接 Page_PreInit 事件,AutoEventWireup 设置为 false

转载 作者:太空狗 更新时间:2023-10-29 21:13:43 26 4
gpt4 key购买 nike

如果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)在接线之前和之后,都没有效果。

显示的图表 hereOnInit方法实际上在 PreInit 之后事件。考虑到这一点,我尝试覆盖 OnPreInit并做同样的事情 --- 没有效果。

MSDN 文章 here明确表示如果发生 AutoEventWireup设置为 false , 事件可以在重写的 OnInit 中连接起来.他们使用的示例是 Page_Load ,当然这就像对我一样有效,但他们没有说明这似乎不适用于 Page_PreInit事件。

我的问题是:如何获得 Page_PreInitAutoEventWireup 的情况下连接的事件设置为 false ?

我知道 MSDN page 中列出了替代方案,例如使用页面的构造函数。我想具体了解如何按照他们建议的方式做 OnInit .

最佳答案

OnPreInit() 的基础实现方法负责引发 PreInit 事件。由于您的重写在注册您的PreInit 处理程序之前调用了该实现,因此它确实不会被调用。

在注册处理程序之后尝试调用基类的方法:

protected override void OnPreInit(EventArgs e)
{
PreInit += new EventHandler(Page_PreInit);
Load += new EventHandler(Page_Load);

// And only then:
base.OnPreInit(e);
}

关于c# - 手动连接 Page_PreInit 事件,AutoEventWireup 设置为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11841519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com