当一个获取网页的请求(可能是通过用户提交完成的,也可能是通过超链接完成的)被发送到Web服务器后,这个页面就会接着运行从创建到处理完成的一系列事件。

ASP.NET页面初始的过程:

1.Page_Init();

2.Load ViewState;

3.Load Postback data;

4.Page_Load();

5.Handle control events;

6.Page_PreRender();

7.Page_Render();

8.Unload event;

9.Dispose method called;

下面是详细描述:

1. Page_Init();     初始化对象

这个过程主要是初始化控件,每次页面载入执行这个初始过程,包括第一次和以后的Postback。在这里可以访问控件,但是这里面的控件值不是我们期待的控件里面的值,而是一个控件的初始值(默认值)。比如,一个TextBox1,我们填入了“哈哈”,在点击submit提交了页面后,在Page_Init()里面,我们访问到的TextBox1.Text不是“哈哈”,而是开始的""空字符串,如果TextBox1在我们设计的时候提供了默认值,这里访问到的也就是提供的默认值。

对应的事件: Page.Init

2. Load ViewState     导入ViewState数据

这个过程是载入ViewState和Postback数据。比如上面的TextBox1,这个时候就赋了“哈哈”,所以,在Post_Init()对控件赋值是无意义的,它都会在这个过程被改写,当然第一次页面载入例外,因为没有ViewState数据。

在初始化事件后,所有控件只可以通过它们的ID被引用访问(因为还没有相应的DOM可使用)。在Load ViewState这个事件中,所有的控件将获得它们的第一个属性:ViewState属性,这个属性最终将被返回给服务器,以判断这个页面是已经被用户访问完毕还是仍然在被用户所访问。

ViewState属性以“名称/值”对的字符串方式被保存,它包含了控件的文本以及值等信息,该属性被存储在一个隐藏的控件的值属性里,在请求页面时被传递。

3. Load Postback data;

Postback可以理解成用户提交表单数据,在页面创建的这个阶段,服务器对页面上的控件提交的表单数据(Postback数据)进行处理。

4. Page_Load();

这个过程也是每次页面载入时一定会执行的。这里一般都会用到Page.IsPostBack来指示,该页面是否正为响应客户端回发而加载,或者它是否正被首次加载和访问。

在Load事件中,对象都被实例化了。所有的对象第一次被布置在DOM页面(在ASP.NET中称控件树)里了,并且可以通过代码或是相关的位置被引用。这样,对象就可以很容易的从客户端获得诸如宽度、高度、值、可见性等在Html中的属性值。在Load事件中,当然还有像设置控件属性等操作的发生。这个过程是整个ASP.NET页面生命周期中最重要、最主要的。可以通过调用OnLoad来重载Load事件。

对应的事件: Page.Load

5. Handle control events;

在这个过程中,相应具体的控件事件。每个控件都被赋予一个布尔值来标识该控件有没有被更新,然后ASP.NET就在整个页面上寻找任何已被更新过的控件并执行RaisePostDataChanged事件操作,不过,这个事件是在所有的控件都被更新了以及Load事件完成后才进行的,这样就保证了一个控件在被Postback数据更新前,别的控件在RaisePostDataChanged事件中是不会被手动改变的。

6. Page_PreRender();   预先呈递对象

在这里能对控件属性等等要呈现给用户的数据进行修改,也是最后的修改,以前的修改都可能被覆盖。

可以通过OnPreRender来重载这一步。

做完了这一步,还会进行一个操作就是保存状态SaveViewState,可以用SaveViewState来重载这一步,但是不能对控件的属性等进行修改了。

对应的事件:Page.PreRender

7. Page_Render();  呈递给Html

在Render事件过程中,页面调用其中的对象将它们呈递给Html,然后,页面就可以以Html的形式被用户访问了。

可以重载Render事件。当Render事件被重载时,开发者可以编写自定义的Html代码使得原先生成的Html都无效而按照新的Html来组织页面。这时所做的修改,只是客户端的变化而已。

对应的事件:Page.Render

8. Unload event

当服务器请求一个对象的时候,就会在内存里生成一个继承页面对象,也就是页面的类,它继承自System.Web.UI.Page. 当页面对象从内存中卸载时,将触发该事件。

对应的事件:Page.Unload

9. Dispose method called

在呈递给Html完成后,所有的对象都应被销毁。可以重载Dispose事件。

对应的事件:Page.Dispose

转载于:https://www.cnblogs.com/niuniu1985/archive/2010/04/26/1721222.html

ASP.NET页面的生命周期相关推荐

  1. 【转】Asp.net页面的生命周期

    介绍 Asp.net是微软.Net战略的一个组成部分.它相对以前的Asp有了很大的发展,引入了许多的新机制.本文就Asp.net页面的生命周期向大家做一个初步的介绍,以期能起到指导大家更好.更灵活地操 ...

  2. asp.net 页面全生命周期

    .Net 托管代码和非托管代码的区别 后台代码隐藏/显示前台控件 .Net 页面生命周期 2012-03-21 13:31:08|  分类: .NET |  标签:.net  页面生命周期  c#  ...

  3. 基础——ASP.NET页面的生命周期

    页请求:页请求发生在页生命周期开始之前.当用户请求一个页面,ASP.NET将确定是否需要分析或者编译该页面,或者是否可以在不运行页的情况下直接请求缓存响应客户端. 开始:发生请求后,页面就进入了初始化 ...

  4. Asp.net页面的生命周期之通俗理解

    很早就看了cat chen的深入理解 ASP.NET 动态控件 (Part 3 - 页面生命周期) ,当时是理解了,但是很不好理解.尤其是追赶加载那部分.最近重新看到那篇文章,禁不住想用打比方的方式来 ...

  5. Asp.net2.0页面的生命周期(续)

    以上就是Asp.net页面生命周期中的几个主要事件.每次我们请求一个Asp.net页面时,我们都经历着同样的过程:从初始化对象到销毁对象.通过了解Asp.net页面的内部运行机制,我相信大家在编写.调 ...

  6. 【Step by Step】编写代码验证一个ASP.NET应用程序和页面的生命周期

    我们知道ASP.NET Page的生命周期实际上是ASP.NET Application的生命周期的一部分.这个周期经历了HTTP Module => HTTP Handler => AS ...

  7. Asp.net2.0页面的生命周期

    当一个获取网页的请求(可能是通过用户提 交完成的,也可能是通过超链接完成的)被发送到Web服务器后,这个页面就会接着运行从创建到处理完成的一系列事件.在我们试图建立Asp.net页面的 时候,这个执行 ...

  8. ASP.NET服务器控件的生命周期分析

    本文实例分析了ASP.NET服务器控件的生命周期.分享给大家供大家参考.具体如下: (1)初始化----在此阶段中,主要完成两项工作:一.初始化在传入Web请求生命周期内所需的设置:二.跟踪视图状态. ...

  9. .Net页面的生命周期(ZZ)

    1.        初始化:主要是执行Page的Init事件和OnIint方法. 2.        加载视图状态:主要是执行LoadViewState方法,就是从ViewState中获取上一次的状态 ...

最新文章

  1. 化身“监工”的AI,我们该如何相处?
  2. 现代版的大案牍术:数字孪生在城市的应用
  3. Windows 10或成为最后一个Windows版本
  4. 算法(第四版)之快速排序
  5. golang 打印函数名/文件名/行号 Callers
  6. c++Data Member的绑定
  7. C#读写txt文件的两种方法介绍
  8. .NET 6新特性试用 | DateOnly和TimeOnly类型
  9. SharePoint 2007 SP2 发布
  10. .net3.5下的Socket通信框架
  11. python turtle库setpos_Python:使用mathturtle库绘制切线图
  12. 用虚拟机配置Linux实验环境
  13. STM32学习——TIM基本定时器
  14. NYOJ-zb的生日(dfs)
  15. git使用总结(持续更新,个人总结记录使用)
  16. 亚马逊推出人工智能咨询服务,机器学习B2B业务又迈出一步
  17. 【div+css】两个div,如何让内层的div在外层div中水平垂直居中
  18. VS 内存不能read—堆栈空间解决栈溢出问题
  19. 云端软件平台 封装了诺基亚PC套件无法找到驱动怎么办
  20. openairinterface5g基站老版eNB部署

热门文章

  1. doe报告模板_技术漫谈|关于制剂研发过程中的实验设计(DOE)误区讨论
  2. MyBatis框架学习DAY_01:概念/创建运行流程
  3. web前段学习day_01:HTML(学习如何搭建页面结构和内容):文本标签、列表标签、图片标签、超链接、表格、表单表单、分区标签、实体引用
  4. c ef框架-mysql_.net EF框架 MySql實現實例
  5. java a标签正则_正则表达式:java中婚配HTML中a标签中的中文字符
  6. linux 调用redis cli,使用redis-cli定时执行指定命令
  7. 解码大脑:改善BCI稳定性
  8. 维塔与 Magic Leap 的MR游戏发布概念片
  9. UE4.18预览第一版发布,共享XR引擎层降低硬件支持难度
  10. AI面试官也太好骗了!用书架图片做视频背景,能提高15%好感度