如何调用Page_Load和其他事件

本文关键字:Load 其他 事件 Page 何调用 调用 | 更新日期: 2023-09-27 18:15:06

我不认为Page_Load, Application_Error等事件都是被重写的方法,因此调用可以从基类路由到它。那么这些方法是如何像事件一样工作的呢?想知道这些事件的注册发生在哪里

如何调用Page_Load和其他事件

应用程序事件和页面事件的处理方式不同。Application是HttpApplication类,而Page是Web Forms HttpHandler的实现。

在这两种情况下ASP。. NET动态地生成事件处理程序。NET编译器使用反射来解析初始应用程序——当它找到带有适当前缀的方法时,它将它们映射到适当的事件处理程序。对于HttpApplication,这些事件在HttpRuntime加载过程中被连接起来,并连接到适当的HttpApplication级别事件。

我写了一篇关于HttpApplication事件映射的博客文章。http://weblog.west-wind.com/posts/2009/Jun/18/How-do-ASPNET-Application-Events-Work

我不记得WebForms做了什么,但我相信整个过程是相似的:反射拾取Page_方法,然后将它们映射到底层事件

您可以在这里阅读所有关于页面生命周期的内容。. NET页面生命周期概述。

如果你想捕获应用程序错误事件,你需要添加全局类。要做到这一点,进入VS解决方案资源管理器,指向你的项目,右键单击,选择"添加新项目",然后选择"全局应用程序类"。这将创建Global。使用下列处理程序:

    protected void Application_Start(object sender, EventArgs e)
    {
    }
    protected void Session_Start(object sender, EventArgs e)
    {
    }
    protected void Application_BeginRequest(object sender, EventArgs e)
    {
    }
    protected void Application_AuthenticateRequest(object sender, EventArgs e)
    {
    }
    protected void Application_Error(object sender, EventArgs e)
    {
    }
    protected void Session_End(object sender, EventArgs e)
    {
    }
    protected void Application_End(object sender, EventArgs e)
    {
    }