此部分说明的生命周期只有部分:

---引用MSDN

阶段

说明

页请求

页请求发生在页生命周期开始之前。用户请求页时,ASP.NET 将确定是否需要分析和编译页(从而开始页的生命周期),或者是否可以在不运行页的情况下发送页的缓存版本以进行响应。

开始

在开始阶段,将设置页属性,如 Request和 Response在此阶段,页还将确定请求是回发请求还是新请求,并设置 IsPostBack 属性。此外,在开始阶段期间,还将设置页的 UICulture 属性。

页初始化

页初始化期间,可以使用页中的控件,并将设置每个控件的 UniqueID 属性。此外,任何主题都将应用于页。如果当前请求是回发请求,则回发数据尚未加载,并且控件属性值尚未还原为视图状态中的值。

加载

加载期间,如果当前请求是回发请求,则将使用从视图状态和控件状态恢复的信息加载控件属性。

验证

在验证期间,将调用所有验证程序控件的 Validate 方法,此方法将设置各个验证程序控件和页的 IsValid 属性。

回发事件处理

如果请求是回发请求,则将调用所有事件处理程序。

呈现

在呈现之前,会针对该页和所有控件保存视图状态。在呈现阶段中,页会针对每个控件调用 Render 方法,它会提供一个文本编写器,用于将控件的输出写入页的 Response 属性的 OutputStream 中。

卸载

完全呈现页并已将页发送至客户端、准备丢弃该页后,将调用卸载。此时,将卸载页属性(如Response 和 Request)并执行清理。

程序测试页面加载顺序

 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Web;
5 using System.Web.UI;
6 using System.Web.UI.WebControls;
7
8 namespace Order
9 {
10 public partial class TestControls : System.Web.UI.Page
11 {
12 static int count = 0;
13 //4
14 protected void Page_Load(object sender, EventArgs e)
15 {
16 Response.Write(count + "----Page_Load <br/>");
17 count++;
18 }
19 //0
20 protected override void OnPreInit(EventArgs e)
21 {
22 base.OnPreInit(e);
23 Response.Write(count + "----OnPreInit <br/>");
24 count++;
25 }
26 //1
27 protected override void OnInit(EventArgs e)
28 {
29 base.OnInit(e);
30 Response.Write(count + "----OnInit <br/>");
31 count++;
32 }
33 //5
34 protected override void OnLoad(EventArgs e)
35 {
36 base.OnLoad(e);
37 Response.Write(count + "----OnLoad <br/>");
38 count++;
39 }
40 //3
41 protected override void OnPreLoad(EventArgs e)
42 {
43 base.OnPreLoad(e);
44 Response.Write(count + "----OnPreLoad <br/>");
45 count++;
46 }
47 //6
48 protected override void OnLoadComplete(EventArgs e)
49 {
50 base.OnLoadComplete(e);
51 Response.Write(count + "----OnLoadComplete <br/>");
52 count++;
53 }
54 //2
55 protected override void OnInitComplete(EventArgs e)
56 {
57 base.OnInitComplete(e);
58 Response.Write(count + "----OnInitComplete <br/>");
59 count++;
60 }
61 protected override void OnUnload(EventArgs e)
62 {
63 base.OnUnload(e);
64 }
65 protected override void OnDataBinding(EventArgs e)
66 {
67 base.OnDataBinding(e);
68 Response.Write(count + "----OnDataBinding <br/>");
69 count++;
70 }
71 //7
72 protected override void OnPreRender(EventArgs e)
73 {
74 base.OnPreRender(e);
75 Response.Write(count + "----OnPreRender <br/>");
76 count++;
77 }
78 protected void btnGraphics_Click1(object sender, EventArgs e)
79 {
80 Response.Write(count + "----btnGraphics_Click <br/>");
81 }
82 }
83 }

运行结果:

0----OnPreInit 
1----OnInit 
2----OnInitComplete 
3----OnPreLoad 
4----Page_Load 
5----OnLoad 

  ----Button_Click

6----OnLoadComplete 
7----OnPreRender 

对应事件分析:

OnPreInit:当调用该方法时,引发PreInit事件。在该事件中主要是应用App_Themes中的主题,与应用母版页,通常这一步我们不需要做什么。

OnInit:初始化页面所应用到的控件,然后将应用的Themes应用给控件,递归的触发子空间的Init方法

OnInitComplete:它的调用标示着初始化完成,所有的控件均已经初始化完毕,所有Themes都已经应用

OnPreLoad:它的调用标示着页面进入加载状态,在该事件中,为自身和所有控件加载视图状态(??),然后会处理Request实例包含所有会发数据

OnLoad:通常用的事件,也就是Page_Load事件,Page_XXX是所有时间的一种事时间链接形式,如Page_Init将调用OnInit方法。这个事件可以处理回发,由于视图状态,Themes,子控件都已经初始化完毕,所以便于我们添加逻辑而不必担心被其他事件把值覆盖                 掉。值得注意的是,任何页面的Load顺序是先自己,再子控件,如:一个Aspx页面被调用Load事件,先加载本身,然后再加载如母版页、用户控件、第三方服务器控件等等

OnLoadComplete:标示着所有控件的加载完成。下一步则是将加载内容进行呈现

OnPreRender:该事件处理准备呈现的一些工作。如:对设置了DataSource的控件进行DataBind,通常,我们可以再这个事件上动态修改某些控件的值

OnPreRenderComplete:该事件标志着准备呈现完成,数据已经完成绑定

SaveViewState:该事件中,将序列化ViewState,然后再页面中以一个input:hidden的元素保存试图状态

Render:在这个阶段,框架会调用所有控件的Render方法,进行页面呈现。以生产html页

Unload:在页面生命周期结束后,进行卸载

ASP.NET Page执行顺序(ASP.NET生命周期)的更多相关文章

  1. ASP.NET Page执行顺序【转】

    一.ASP.NET 母版页和内容页中的事件 母版页和内容页都可以包含控件的事件处理程序.对于控件而言,事件是在本地处理的,即内容页中的控件在内容页中引发事件,母版页中的控件在母版页中引发事件.控件事件 ...

  2. ASP.NET Page执行顺序

    using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ...

  3. ASP.NET Page执行顺序如:OnPreInit()、OnInit()……

    using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security ...

  4. ASP.NET Page执行顺序如:OnPreInit()、OnInit()

    http://www.cnblogs.com/yeminglong/archive/2012/10/16/2725664.html 当页面进行回发时,如点击按钮,以上事件都会重新执行一次,这时的执行顺 ...

  5. ASP.NET 页面执行顺序详解

    今天整理了一下ASP执行过程,从.net页码的执行周期开始做一个详细的了解.我重写了页面的绝大多数方法.然后加载执行.所得的顺序如下. 方法是每个重写的事件中都输出一个字符,按字符打印出来的先后判断事 ...

  6. ASP.NET Web 应用程序及页面生命周期

    以客户端浏览器向 ASP.NET Web 应用程序页面发送请求(Request)为起点,以浏览器收到 Web 服务器的响应(Response)为终点,这一完整的过程被称为"应用程序及页面的生 ...

  7. 【深入ASP.NET原理系列】--ASP.NET请求管道、应用程序生命周期、整体运行机制

    微软的程序设计和相应的IDE做的很棒,让人很快就能有生产力..NET上手容易,生产力很高,但对于一个不是那么勤奋的人,他很可能就不再进步了,没有想深入下去的动力,他不用去理解整个框架和环境是怎么执行的 ...

  8. ASP.NET请求管道、应用程序生命周期、整体运行机制

    我们知道在ASP.NET中,若要对ASP.NET应用程序进行 初始化并使它处理请求,必须执行一些处理步骤,熟悉应用程序生命周期非常重要,这样才能在适当的生命周期阶段编写代码,达到预期的效果.永远不要做 ...

  9. ASP.NET 页面执行顺序

    1.对象初始化(Onlnit方法) 页面中的控件(包括页面本身)都是在它们最初的form中被首次初始化的,通过在aspx页面的后台代码文件的构造器中声明你的对象,页面将知道对象的类型,并知道需要创建多 ...

随机推荐

  1. ZOJ-1649 Rescue BFS (HDU 1242)

    看题传送门: ZOJ http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1649 HDU http://acm.hdu.edu. ...

  2. jquery常用方法总结(转)

    取值与赋值操作 $("#ID").val(); //取value值 $("#ID").val("xxx"); //赋值 $("#I ...

  3. 观CSDN站点小Bug有感

            今天早上在浏览博客的时候偶然发现CSDN博客的数据出现了异常,我也是头一次看到这么明显的Bug.详细什么表现呢?先来看个截图.例如以下:             常常看CSDN博客的人 ...

  4. js课程 2-7 for-in循环怎么使用

    js课程 2-7 for-in循环怎么使用 一.总结 一句话总结:用的是in的作用加上for的作用,相当于一个组合技. 1.js中in运算符的作用是什么? 判断一个元素是否在一个集合或者对象中 1.a ...

  5. HTTP协议和HTTPS协议初探

    概况 HTTP是hypertext transfer protocol(超文本传输协议)的简写.它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEBserver之间交换数据的过程. HT ...

  6. 段的创建表user_segments 分类: H2_ORACLE 2013-08-10 11:13 714人阅读 评论(0) 收藏

    1.段的定义及类型 Oracle中的段(segment)是占用磁盘空间的一个对象,最常见的段类型包括: l  聚簇cluster l  表table l  表分区 tablepartition l  ...

  7. IOS的后台执行

    写在前面给大家推荐一个不错的站点  www.joblai.com 本文章由央广传媒开发部 冯宝瑞整理.哈哈 http://www.cocoachina.com/bbs/read.php? tid=14 ...

  8. [Angular Directive] 1. Write an Angular Directive

    Angular 2 Directives allow you manipulate elements by adding custom behaviors through attributes. Th ...

  9. http500:服务器内部错误案例详解(服务器代码语法错误或者逻辑错误)

    http500:服务器内部错误案例详解(服务器代码语法错误或者逻辑错误) 一.总结 服务器内部错误可能是服务器中代码运行的时候的语法错误或者逻辑错误 二.http500:服务器内部错误案例详解 只是一 ...

  10. 【u215】河床

    问题描述 小明是一个地理学家,经常要对一段河流进行测量分析.他从上游开始向下游方向等距离地选择了N个点测量水位深度.得到一组数据d1,d2,--,dn,回到实验室后数据分析员根据需要对数据进行分析,发 ...