- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
AutoEventWireup
使用 反射 通过 page_eventName
搜索页面方法
When AutoEventWireup is true, handlers are automatically bound to events at run time based on their name and signature. For each event, ASP.NET searches for a method that is named according to the pattern Page_eventname, such as Page_Load or Page_Init.
问题:
他是否对每个 请求都这样做?
我查看了 Internet 临时文件
(在 Microsoft.net
文件夹...)看他是否保存了另一个包含显式处理程序附件的文件 - 和 无法找到任何 .
最佳答案
正如@Marc 所说,ASP.NET 似乎为此使用了缓存。请参阅内部 TemplateControl.HookUpAutomaticHandlers
。
此方法的一部分使用 dotPeek :
internal void HookUpAutomaticHandlers()
{
...
object obj = TemplateControl._eventListCache[(object) this.GetType()];
if (obj == null)
{
lock (TemplateControl._lockObject)
{
obj = TemplateControl._eventListCache[(object) this.GetType()];
if (obj == null)
{
IDictionary local_1_1 = (IDictionary) new ListDictionary();
this.GetDelegateInformation(local_1_1);
obj = local_1_1.Count != 0 ? (object) local_1_1 : TemplateControl._emptyEventSingleton;
TemplateControl._eventListCache[(object) this.GetType()] = obj;
}
}
}
...
私有(private) GetDelegateInformation
方法负责为控件创建委托(delegate)。TemplateControl._eventListCache
是一个 Hashtable
,它包含每个模板控件的委托(delegate)。
那么,回答你的问题:
Does he do it for every request ?
答案是否定的。 ASP.NET 执行一次以填充此 Hashtable
,然后使用缓存的值。
关于c# - Asp.net的AutoEventWireup和反射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13379177/
我一直在考虑提高我的 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
我是一名优秀的程序员,十分优秀!