- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
如果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)
在接线之前和之后,都没有效果。
显示的图表 here说OnInit
方法实际上在 PreInit
之后事件。考虑到这一点,我尝试覆盖 OnPreInit
并做同样的事情 --- 没有效果。
MSDN 文章 here明确表示如果发生 AutoEventWireup
设置为 false
, 事件可以在重写的 OnInit
中连接起来.他们使用的示例是 Page_Load
,当然这就像对我一样有效,但他们没有说明这似乎不适用于 Page_PreInit
事件。
我的问题是:如何获得 Page_PreInit
在 AutoEventWireup
的情况下连接的事件设置为 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/
我一直在考虑提高我的 ASP.NET 页面性能。是否值得将 autoeventwireup 从 true 更改为 false 并添加事件处理程序,还是性能损失非常小? 这是一个 ASP.NET 2.0
我正在使用 Visual Studio 2012 专业版。我看不出在页面指令中为 AutoEventWireup 属性设置“true”与“false”有什么区别。它一直表现为“真”,意思是 - 我设置
我正在做一个性能非常重要的项目,我想永久禁用 AutoEventWireup。问题在于页面和控制指令覆盖了 web.config 中的设置。由于这个项目会有很多合作者,所以不可能期望每个人在创建新页面
我不明白 AutoEventWireUp 页面属性的作用。 我已通读 this article ,但即便如此我还是不明白。 最佳答案 当请求页面时,它会引发各种事件,这些事件被视为其 lifecycl
我一直在挖掘反射器中的 Page、TemplateControl 和 Control 类,试图找出 AutoEventWireUp 属性的实际使用位置。我失败得很惨。 我对 AutoEventWire
当我向网站添加 .aspx 页面或 .ascx 控件时,页面/控件指令中的 AutoEventWireup 属性显示的默认值为 true。有什么方法可以更改这个默认值(我大多将此值设置为 false)
使用 C#,有一个包含许多控件的 Web 表单,其中 AutoEventWireup 设置为 false。这会强制您在 ctor 中或通过覆盖 OnInit 来初始化您需要的处理程序。 页面上的控件需
我有 ASP 背景,正在学习 ASP.NET。我想知道 AutoEventWireup 属性是否也连接 Control 事件(如 Button_Click)或仅连接 Page 事件?我在 SO 的其他
我们的应用程序注册事件 OnInit。当开发人员从 Visual Studio 模板创建新的 aspx 文件时,它具有 AutoEventWireup="true"。这导致事件处理程序被注册两次并运行
我正在使用 C#。默认情况下,当我在带有或不带有母版页的 Visual Studio 2008 中添加 Web 窗体时,AutoEventWireup 属性在页面指令中设置为 true。此属性也在母版
如果AutoEventWireup属性设置为 false ,事件需要手动连接。但是,我似乎无法获得 Page_PreInit开火。我想我可能使接线发生得太晚了(一旦我们已经过了 Page_PreIni
我在遗留项目中遇到了一个奇怪的问题,其中事件的组合导致了意外行为(无论如何我都没想到)。我能够在本地复制这个问题;并调试以缩小问题范围。我在下面详细说明了。谢谢。注意:这是完整的测试重现代码。 开发环
使用 VS2008,C#。当 AutoEventWireup 设置为 true 并且在网络表单中我调用 base.OnLoad(e) 时: protected void Page_Load(objec
我是一名优秀的程序员,十分优秀!