如何调用Page_Load和其他事件?

时间:2014-07-26 18:59:27

标签: c# asp.net

我没有看到像Page_Load,Application_Error这样的事件作为重写方法,因此可以从基类将调用路由到它。然后这些方法如何像事件一样?想知道这些事件的注册发生在哪里。

2 个答案:

答案 0 :(得分:1)

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

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

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

我无法回想起WebForms的作用,但我相信整个过程是相似的:反思选择Page_方法,然后将它们映射到基础事件。

答案 1 :(得分:0)

您可以在此处阅读有关页面生命周期的所有内容ASP.NET Page Life Cycle Overview

如果要捕获Application Error事件,则需要添加Global Class。要执行此操作,请转到VS解决方案资源管理器指向您的项目,右键单击,选择"添加新项目"然后选择"全球应用程序类"。这将使用以下处理程序创建Global.asax:

    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)
    {

    }