`

Asp.Net--->Page生命周期详解

阅读更多

 

  以下内容:参考MSDN和asp.net3.5网络开发详解样章:

  http://www.cnblogs.com/aspnet008/archive/2008/05/21/1203909.html

 

 

 

     (1)请求页面:页请求发生在页生命周期开始之前。

2)开始:在开始阶段,将设置页属性,如RequestResponse。在此阶段,页还将确定请求是回发请求还是新请求,并设置IsPostBack属性。

3)初始化页面:页面初始化期间,可以使用页中的控件,并将设置每个控件的UniqueID属性。如果当前请求是回发请求,则回发数据尚未加载,并且控件属性值尚未还原为视图状态中的值。

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

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

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

7)呈现页面:在页面呈现期间,视图状态将被保存到页面,然后页面将调用每个控件,以将其呈现的输出提供给页的Response属性的OutputStream

8)卸载页面:完全呈现页、将页发送至客户端并准备丢弃时,将调用卸载。此时,将卸载页属性(如ResponseRequest)并执行清理。

与上面的生命周期相对应的Page类的生命周期事件如图所示。

 

 

 

Page类生命周期中各个事件的说明如表所示。

 

Page类生命周期中各个事件的说明如表所示。

   

   

Init

当服务器控件初始化时发生;初始化是控件生存期的第一步

InitComplete

在页初始化完成时发生

PreInit

在页初始化开始时发生

Load

当服务器控件加载到Page对象中时发生

LoadComplete

在页生命周期的加载阶段结束时发生

PreLoad

在页Load事件之前发生

PreRender

在页面加载控件对象之后、呈现之前发生

PreRenderComplete

在呈现页内容之前发生

UnLoad

当服务器控件从内存中卸载时发生

Disposed

当从内存释放服务器控件时发生,这是服务器控件生存期的最后阶段

 

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

public partial class _Default : System.Web.UI.Page
{
    protected int i = 1;

    protected void Page_PreInit(object sender, EventArgs e)
    {
        Response.Write(i + ".PreInit:当页面初始化开始时发生");
        i++;
        Response.Write("<br>");
    }

    protected void Page_Init(object sender, EventArgs e)
    {
        Response.Write(i + ".Init:当服务器空间初始化时发生");
        i++;
        Response.Write("<br>");
    }

    protected void Page_InitComplete(object sender, EventArgs e)
    {
        Response.Write(i + ".InitComplete:当页初始化完成时发生");
        i++;
        Response.Write("<br>");
    }

    protected void Page_PreLoad(object sender, EventArgs e)
    {
        Response.Write(i + ".PreLoad:当页load事件前发生");
        i++;
        Response.Write("<br>");
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write(i + ".Load:当服务器控件加载到Page对象中时发生(加载页面时)");
        i++;
        Response.Write("<br>");
     
      //在Load和LoadComplete之间会执行控件事件.
      //如 Button 控件的 Click 事件或 TextBox 控件的 TextChanged 事件。
    }

    protected void Page_LoadComplete(object sender, EventArgs e)
    {
        Response.Write(i + ".LoadComplete:当页面生命周期的加载阶段结束时发生");
        i++;
        Response.Write("<br>");
    }

    protected void Page_PreRender(object sender, EventArgs e)
    {
        Response.Write(i + ".PreRender:当页加载控件之后,呈现之前发生,使用该事件对页或其控件的内容进行最后更改(预呈现)");
        i++;
        Response.Write("<br>");
    }


    protected void Page_PreRenderComplete(object sender, EventArgs e)
    {
        Response.Write(i + ".PreRenderComplete:呈现内容前发生.(预呈现完成)");
        i++;
        Response.Write("<br>");
    }




    protected void Page_SaveStateComplete(object sender, EventArgs e)
    {
        /*网页上控件的状态信息是在 PreRenderComplete 事件后保存的。
       在SaveStateComplete事件之前用Trace查看页时其实在该事件前还有
       一个SaveState事件,只是这里无法演示.
       
       注意:SaveStateComplete 事件在将页和页上控件的视图状态和控件状态保存到持久性介质之后引发。
       这是在页被呈现到请求浏览器之前引发的最后一个事件。*/

        Response.Write(i + ".SaveStateComplete:在页已完成对页和页上控件的所有视图状态和控件状态信息的保存后发生.");
        i++;
        Response.Write("<br>");




        /*最后一部操作
        呈现:Render:
        它不是事件;在处理的这个阶段,Page 对象会在每个控件上调用此方法Render()。
        所有 ASP.NET Web 服务器控件都有一个用于写出发送给浏览器的控件标记的 Render 方法。*/


        /*当你关闭页面的时候就会引发UnLoad(当服务器控件从内存中卸载时发生)
         和Disposed两事件(当从内存释放服务器控件时发生,这是服务器控件生存期的最后阶段)
        
        首先加载UnLoad事件:卸载页面:完全呈现页、将页发送至客户端并准备丢弃时,
        将调用卸载。此时,将卸载页属性(如Response和Request)并执行清理.
         
        最后加载Disposed事件,释放资源,生命周期结束.... 
        */
    }

}

 

 

结果:

 

 

Trace图:

 

  • 大小: 31.8 KB
  • 大小: 47.2 KB
  • 大小: 61.5 KB
  • 大小: 58 KB
  • 大小: 219.8 KB
分享到:
评论

相关推荐

    ASP.NET Page生命周期详解

    (1)请求页面:页请求发生在页生命周期开始之前。 (2)开始:在开始阶段,将设置页属性,如Request和Response。在此阶段,页还将确定请求是回发请求还是新请求,并设置IsPostBack属性。 (3)初始化页面:页面初始...

    Web Page的生命周期详解

    本页面被请求时发生在web page生命周期之前, 当有一个页面被请求时,ASP.NET引擎要判断一下这个页面是否需要经过编译或者直接通过此页面的缓冲版本直接发给请求者。 2. Start 在这阶段,Page的Request,Response...

    详解ASP.NET页面生命周期

    ASP.NET页面运行时候,页面将经历一个生命周期,在生命周期中将执行一系列的处理步骤。包括初始化、实例化控件、还原和维护状态、运行时间处理程序代码以及进行呈现。熟悉页面生命周期非常重要,这样我们才能在生命...

    ASP.NET Night Words

    5.2 asp.net页面的生命周期 50 5.3 利用page的事件进行统一 5.3 身份验证 52 5.4 ispostback属性 54 5.5 validaterequest属性 55 5.6 clientscript属性 56 5.7 回调技术 60 5.8 总结 67 第6章 asp.net基本...

    庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术

    16.5.2 asp.net ajax控件客户端生命周期 589 16.6 客户端控件示例应用 592 16.7 调试和跟踪 603 16.8 本章总结 605 第17章 asp.net ajax控件开发——服务端 606 17.1 asp.net ajax服务器控件概述 606 17.2 ...

    Asp.Net WebForm生命周期的详解

    一.Asp.Net页面生命周期的概念  当我们在浏览器地址栏中输入网址,回车查看页面时,这时会向服务器端IIS)发送一个request请求,服务器会判断发送过来的请求页面,当完全识别 TTP页面处理程序类后,ASP.NET运行时...

    庖丁解牛纵向切入ASP.NET 3.5控件和组件开发技术.pdf

    16.5.2 asp.net ajax控件客户端生命周期589 16.6 客户端控件示例应用592 16.7 调试和跟踪603 16.8 本章总结605 第17章 asp.net ajax控件开发——服务端606 17.1 asp.net ajax服务器控件概述606 17.2 ajax...

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part1

    16.5.2 asp.net ajax控件客户端生命周期 589 16.6 客户端控件示例应用 592 16.7 调试和跟踪 603 16.8 本章总结 605 第17章 asp.net ajax控件开发——服务端 606 17.1 asp.net ajax服务器控件概述 606 17.2 ...

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part2

    16.5.2 asp.net ajax控件客户端生命周期 589 16.6 客户端控件示例应用 592 16.7 调试和跟踪 603 16.8 本章总结 605 第17章 asp.net ajax控件开发——服务端 606 17.1 asp.net ajax服务器控件概述 606 17.2 ...

Global site tag (gtag.js) - Google Analytics