我在哪里可以看到ASP.NET中如何连接事件

时间:2013-10-24 07:51:42

标签: c# asp.net events autoeventwireup

我的面条有一种感觉的火花。我正在浏览我的ASP.NET页面,我注意到了

  

挂起,Page_Load不等于类的名称,因此它不能是我的aspx.cs页面上我的类的构造函数

我有一种直觉,AutoEventWireup="true"负责告诉页面,默认情况下,调用protected void Page_Load(object sender, EventArgs e)方法。问题(和问题)是我不知道如何或在哪里可以查看哪些事件连接到哪些处理程序。我确信AutoEventWireup="true"在某个地方有这个代码段:

this.Load += this.Page_Load

我只是想扩大我的知识。我在哪里可以看到AutoEventWireup正在“连接”哪些事件?

修改

我在尝试进行虚拟构造函数调用后发现了这个想法(因为我不小心删除了Page_Load,我在代码隐藏中创建了一个构造函数.Resharper建议我必须密封这个类。我认为这种情况并不常见双重检查了另一个页面,并将我的Page_Load复制粘贴回来。这就是我想知道事件是如何实际连线的。我们如何知道它必须调用Page_Load

1 个答案:

答案 0 :(得分:2)

这适用于.NET 4其他框架会略有不同但是在使用Reflector时,您可以发现TemplateControl PageUserControl都继承了私有方法{{1}这会将这些代表连接起来。

GetDelegateInformationWithNoAssert

如果您按照此方法的用法进行操作,您将看到它从private void GetDelegateInformationWithNoAssert(IDictionary dictionary) { if (this is Page) { this.GetDelegateInformationFromMethod("Page_PreInit", dictionary); this.GetDelegateInformationFromMethod("Page_PreLoad", dictionary); this.GetDelegateInformationFromMethod("Page_LoadComplete", dictionary); this.GetDelegateInformationFromMethod("Page_PreRenderComplete", dictionary); this.GetDelegateInformationFromMethod("Page_InitComplete", dictionary); this.GetDelegateInformationFromMethod("Page_SaveStateComplete", dictionary); } this.GetDelegateInformationFromMethod("Page_Init", dictionary); this.GetDelegateInformationFromMethod("Page_Load", dictionary); this.GetDelegateInformationFromMethod("Page_DataBind", dictionary); this.GetDelegateInformationFromMethod("Page_PreRender", dictionary); this.GetDelegateInformationFromMethod("Page_Unload", dictionary); this.GetDelegateInformationFromMethod("Page_Error", dictionary); if (!this.GetDelegateInformationFromMethod("Page_AbortTransaction", dictionary)) { this.GetDelegateInformationFromMethod("OnTransactionAbort", dictionary); } if (!this.GetDelegateInformationFromMethod("Page_CommitTransaction", dictionary)) { this.GetDelegateInformationFromMethod("OnTransactionCommit", dictionary); } } 调用,并且此方法仅在HookUpAutomaticHandlers为真时附加代理。