`
pavel
  • 浏览: 928415 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

asp.net 页面的事件执行顺序

阅读更多

默认的aspx页面都是继承自System.Web.UI.Page,Page基类定义了很多需要预执行的事件,这些事件虽没有在aspx页面中显示的定义或提及,但它们仍然会以一定的顺序去执行,这些事件的执行顺序是:

1. OnPreInit
2. OnInit
3. OnInitComplete
4. OnPreLoad
5. Page_Load
6. OnLoad
7. OnLoadComplete
8. OnPreRender

以上事件除了Page_Load 为aspx页面自己的事件外,其余的都是继承自基类Page。

当页面进行回发时,如点击按钮,以上事件都会重新执行一次,这时的执行顺序为:

1. OnPreInit
2. OnInit
3. OnInitComplete
4. OnPreLoad
5. Page_Load
6. OnLoad

7. Button_Click
8. OnLoadComplete
9. OnPreRender

可以看到,Button_Click事件位于OnLoad之后执行,可以测试一下:

public partial class TestControls : System.Web.UI.Page
    {
        static int count = 0;
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write(count+ "Page_Load <br />");
            count++;
        }
        protected override void OnPreInit(EventArgs e)
        {
            base.OnPreInit(e);
            Response.Write(count + "OnPreInit <br />");
            count++;
        }
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            Response.Write(count + "OnInit <br />");
            count++;
        }
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            Response.Write(count + "OnLoad <br />");
            count++;
        }
        protected override void OnPreLoad(EventArgs e)
        {
            base.OnPreLoad(e);
            Response.Write(count + "OnPreLoad <br />");
            count++;
        }
        protected override void OnLoadComplete(EventArgs e)
        {
            base.OnLoadComplete(e);
            Response.Write(count + "OnLoadComplete <br />");
            count++;
        }
        protected override void OnInitComplete(EventArgs e)
        {
            base.OnInitComplete(e);
            Response.Write(count + "OnInitComplete <br />");
            count++;
        }
        protected override void OnUnload(EventArgs e)
        {
            base.OnUnload(e);
        }
        protected override void OnDataBinding(EventArgs e)
        {
            base.OnDataBinding(e);
            Response.Write(count + "OnDataBinding <br />");
            count++;
        }
        protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);
            Response.Write(count + "OnPreRender <br />");
            count++;
        }

        protected void btnGraphics_Click(object sender, EventArgs e)
        {
            //Bitmap bmp = new Bitmap(10, 10);
            //Graphics g = Graphics.FromImage(bmp);
            Response.Write(count + "btnGraphics_Click <br />");
            count++;
        }
    }
如果页面从另一个页面继承,如BasePage:System.Web.UI.Page,在BasePage中做了一些扩展,如权限检查,而其他页面从BasePage继承,则BasePage和最终Page的事件激活顺序是:

UI.PreInit
Page.PreInit
UI.Init
Page.Init
UI.InitComplite
Page.InitComplite
UI.PreLoad
Page.PreLoad
UI.Load
Page.Load
UI.LoadComplete
Page.LoadComplete
UI.PreRender
Page.PreRender
UI.PreRenderComplete
Page.PreRenderComplete

如果使用了MasterPage,则MasterPage中的事件和ContentPage中的事件按照下面顺序激活:

ContentPage.PreInit
Master.Init
ContentPage.Init
ContentPage.InitComplite
ContentPage.PreLoad
ContentPage.Load
Master.Load
ContentPage.LoadComplete
ContentPage.PreRender
Master.PreRender
ContentPage.PreRenderComplete

更进一步,如果ContentPage继承BasePage,那么,各事件的执行顺序将变成:

UI.PreInit
ContentPage.PreInit
Master.Init
UI.Init
ContentPage.Init
UI.InitComplite
ContentPage.InitComplite
UI.PreLoad
ContentPage.PreLoad
UI.Load
ContentPage.Load
Master.Load
UI.LoadComplete
ContentPage.LoadComplete
UI.PreRender
ContentPage.PreRender
Master.PreRender
UI.PreRenderComplete
ContentPage.PreRenderComplete

 

即:先加载继承页的,在加载自己的,如果继承页有继承则先加载继承页的继承。

分享到:
评论

相关推荐

    ASP.NET页面事件执行过程

    了解这些事件的执行顺序对编写高效且健壮的ASP.NET应用程序至关重要。在编写事件处理程序时,开发者可以根据这个顺序来决定何时添加逻辑,以确保数据正确加载、控件正确初始化,以及在页面呈现前完成所有必要的操作...

    ASP.NET 2.0页面执行顺序

    能很直观的了解ASP.NET 2.0页面执行顺序

    ASP.NET 页面事件执行顺序介绍

    代码如下: #region 控件事件 第六步 protected void Button1_Click(object sender, EventArgs e) { //用这些事件来处理特定控件事件,如 Button 控件的 Click 事件或 TextBox 控件的 TextChanged 事件。 //注意 //在...

    ASP.NET 页面对象模型

    页面生命周期是ASP.NET页面对象模型的核心概念,包括一系列事件,如初始化、加载、回发数据、验证、呈现和卸载。这些事件提供了开发者介入和控制页面行为的机会。例如,`Page_Load`事件用于在页面加载时执行特定...

    ASP.Net页面生命周期

    ASP.NET页面生命周期是ASP.NET应用程序开发中的核心概念,它描述了从用户请求页面到服务器响应完成的整个过程。了解这个生命周期对于高效、准确地编写ASP.NET代码至关重要。 1. **初始化对象** 在页面生命周期的...

    ASP.NET中不同部分的js代码的执行顺序

    通常情况下,这是在ASP.NET页面生命周期中的`Page_Load`方法中完成的。有两种主要的方法来实现这一点:`Page.RegisterStartupScript` 和 `ScriptManager.RegisterClientScriptBlock`。 - **Page....

    asp.net页面加载顺序1

    以下是ASP.NET页面加载顺序的详细解释: 1. **初始化阶段**: - **构造函数**:在页面被请求时首先调用,用于初始化自定义属性或对象。此时,可以访问`HttpContext`对象,如`QueryString`、`Form`、`Cookies`和`...

    引用asp.net母版页后,母版页和内容页的页面事件执行顺序

    了解这些事件的执行顺序对于编写高效、可靠的ASP.NET应用程序至关重要。通过掌握这一顺序,开发者可以更好地控制页面行为,确保数据的正确处理,以及在合适的时机进行页面操作。在开发过程中,合理利用这些事件可以...

    ASP.NET委托和事件

    在ASP.NET中,委托和事件是两个关键概念,它们是实现组件间通信和响应用户交互的重要机制。 **委托(Delegate)** 委托在.NET Framework中扮演着函数指针的角色,允许我们传递方法作为参数或者存储方法以便稍后调用...

    asp.net生命周期

    ASP.NET页面生命周期同样复杂,每个页面在被请求时都会经历一系列步骤。以下是页面生命周期的主要阶段: 1. 浏览器请求:浏览器向服务器发送请求,可能包含POST数据。 2. 页面框架初始化:ASP.NET创建页面对象,初始...

    aspx页面事件执行顺序

    ASPX页面事件执行顺序是网页开发中至关重要的概念,它涉及到.NET Framework下的ASP.NET应用程序的生命周期管理。在ASP.NET中,每一个.aspx页面经历一系列的事件,这些事件在页面的加载和处理过程中依次触发,允许...

    Asp.Net技术学习顺序问题

    在Asp.Net技术的学习过程中,对于初学者来说,掌握正确的学习顺序至关重要,这不仅可以提高学习效率,还能确保对各个知识点的深入理解。以下是一个详细且系统化的Asp.Net技术学习路径,供你参考: 1. **基础知识**...

    【ASP.NET编程知识】详解ASP.NET页面生命周期.docx

    ASP.NET页面生命周期是ASP.NET Web Forms开发中的核心概念,它描述了一个ASP.NET页面从请求开始到响应返回给客户端的整个过程。在这个过程中,页面会经历一系列的阶段,每个阶段都有其特定的任务和目的,允许开发者...

    asp页面加载事件顺序

    了解和掌握ASP.NET页面加载事件顺序对于优化代码执行效率,避免不必要的数据处理,以及确保页面在不同阶段的正确行为都至关重要。通过深入理解这些事件,开发者能够更好地控制页面的行为,提高用户体验,同时减少...

    Web程序设计——ASP.NET项目实训PPT.zip

    8. **页面生命周期和事件传播**:理解ASP.NET页面的生命周期对于优化性能和解决问题至关重要。PPT将解释各个阶段,如初始化、加载、回发等,以及事件传播顺序。 9. **部署和调试**:学习如何将ASP.NET应用程序部署...

    Asp.NET页面中事件加载的先后顺序详解

    以下是对Asp.NET页面事件加载顺序的详细解释: 1. **单独的Page事件顺序**: - `Page.PreInit`:这是页面生命周期的第一个事件,允许在此阶段设置控件属性,例如设置MasterPage。 - `Page.Init`:在此阶段,所有...

    测试aps.net 页面周期

    ASP.NET 页面生命周期是Web开发中的核心概念,它描述了从用户请求一个页面到服务器响应页面回显给用户的过程中,页面对象经历的一系列...通过实际测试,你可以直观地看到这些事件的执行顺序,更好地掌握你的程序代码。

    Asp.net的TextBox回车触发事件

    在Asp.net开发中,经常需要处理用户在文本框(`TextBox`)内的输入操作,特别是在用户按下回车键时触发某些特定的操作,比如提交表单或者执行搜索功能等。本文将详细介绍如何在Asp.net中实现TextBox回车触发事件。 ...

    ASP.NET 编程模型介绍

    - HttpHandler(或IHttpHandler)是实际处理HTTP请求的对象,它可以是ASP.NET页面、Web服务或其他自定义的处理程序。HttpHandler接收HTTP请求,生成响应内容,并通过HttpWriter返回给客户端。 - ...

Global site tag (gtag.js) - Google Analytics