gpt4 book ai didi

asp.net - ASP.NET 是否使用反射来检查事件处理程序的存在?

转载 作者:行者123 更新时间:2023-12-04 06:04:44 27 4
gpt4 key购买 nike

我创建了一个 asp.net 页面,例如默认.aspx。

然后我定义一个按钮...

<asp:Button ID="btnNew" runat="server" Text="New" OnClick="btnNew_OnClick" /> 

...但是我没有在代码中定义 btnNew_OnClick 的处理程序。

当我启动页面并抛出异常时,ASP.Net 会告诉我这一点。

因此,它是否使用反射来检查实现我的页面的类是否具有此方法?

如果每次解析页面的标记时都必须这样做,这是否有效?

最佳答案

不具体。当 ASP.NET compiles your ASPX markup 时会发生这种情况. ASPX 标记在页面第一次被即时点击时被编译,并存储在 C:\WINDOWS\Microsoft.NET\Framework\vX\Temporary ASP.NET Files 中的某处。 .

如果您使用 aspnet_compiler.exe 预编译页面,则异常(exception)。 .但是,如果您要预编译它,您会在那里看到错误,而不是在您访问站点时。

Is this efficient if it has to do this each time it parses a page's markup?



ASP.NET 不会在每次页面查看和回发时解析标记;它只在编译时解析一次。它存储页面的哈希值(通常称为 hash.web 临时 ASP.NET 文件中的某处)并比较哈希值。如果散列不同(页面更改),则重新编译它。以下是编译后的代码可能是什么样子的示例:
#line 58 "C:\X\UserControls\FilterControl.ascx"
@__ctrl.Click -= new System.EventHandler(this.btnApply_Click);

#line default
#line hidden

#line 58 "C:\X\UserControls\FilterControl.ascx"
@__ctrl.Click += new System.EventHandler(this.btnApply_Click);

这当然会被编译成一个可执行程序集。实际上,ASPX 编译器所做的是将服务器端标记编译为 C# 代码,然后将其编译为程序集。

关于asp.net - ASP.NET 是否使用反射来检查事件处理程序的存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8491880/

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