zoukankan      html  css  js  c++  java
  • 页面生命周期

    ASP.NET编程模型之页面生命周期执行一系列步骤:页面的初始化、实例化控件、还原和维护状态、运行事件处理程序代码、呈现。为了在合适的阶段执行所需的代码,所以要对页面生命周期非常熟悉。在页生命周期的各个阶段,页面会逐个引发定义的事件,通过对代码开发,在页面的生命事件中执行我们所需要的程序
    页生命周期阶段

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

    2、ASP.NET页面生命周期之开始:设置页属性,如:HttpContext以及其他属性;在此阶段,页面需要确定是回发请求还是新请求,并设置IsPostBack属性;设置页面的UICulture属性。

    3、 ASP.NET页面生命周期之页面初始化:加载所有主题;控件生成,并设置UniqueID;

    注:ViewState、ControlState中的值还未加载至控件;如果页面是回发,则回发数据也还未加载;故此时控件可以访问,但值可能出错。

    4、ASP.NET页面生命周期之加载:如果当前请求是回发请求,则为控件加载ViewState和ControlState中的值。

    5、ASP.NET页面生命周期之验证:调用所有验证程序控件的Validate方法,此方法将设置验证程序控件和页的IsValid属性。

    6、ASP.NET页面生命周期之回发事件处理:如果请求是回发请求,则调用所有事件处理程序。

    7、ASP.NET页面生命周期之呈现:首先对该页和所有控件进行保存视图状态,然后对每个控件调用Render方法,它会提供一个文本编写器,用于将控件的输入写入页的Response属性的OutputStream中。

    8、ASP.NET页面生命周期之卸载:完成呈现,并已将页发送至客户端、准备丢弃该页后,调用卸载。将卸载属性如:Response和Request等等。

      关于具有master 的asp.net的页面生成周期,我们可以通过下面的例子可以清楚的看出其页面时间的执行顺序。
    master页面代码
    public partial class Site : System.Web.UI.MasterPage
        {
            protected void Page_PreInit(object sender, EventArgs e)
            {
                Response.Write("MasterPage_PreInit<br/>");
            }
            protected void Page_Init(object sender, EventArgs e)
            {
                Response.Write("MasterPage_Init<br/>");
            }
            protected void Page_InitComplete(object sender, EventArgs e)
            {
                Response.Write("MasterPage_InitComplete<br/>");
            }
            protected void Page_PreLoad(object sender, EventArgs e)
            {
                Response.Write("MasterPage_PreLoad<br/>");
            }
            protected void Page_Load(object sender, EventArgs e)
            {
                Response.Write("MasterPage_Load<br/>");
            }
            protected void Page_LoadComplete(object sender, EventArgs e)
            {
                Response.Write("MasterPage_LoadComplete<br/>");
            }
            protected void Page_PreRender(object sender, EventArgs e)
            {
                Response.Write("MasterPage_PreRender<br/>");
            }
            protected void Page_PreRenderComplete(object sender, EventArgs e)
            {
                Response.Write("MasterPage_PreRenderComplete<br/>");
            }
            protected void Page_SaveStateComplete(object sender, EventArgs e)
            {
                Response.Write("MasterPage_SaveStateComplete<br/>");
            }
            protected void Page_Unload(object sender, EventArgs e)
            {
                //Response.Write("MasterPage_Unload<br/>");
                int i = 0;
                i++;//这行代码是用来设置断点的,这里不能用Response.Write
            }

    页面代码:
    protected void Page_PreInit(object sender, EventArgs e)
            {
                Response.Write("Page_PreInit<br/>");
            }
            protected void Page_Init(object sender, EventArgs e)
            {
                Response.Write("Page_Init<br/>");
            }
            protected void Page_InitComplete(object sender, EventArgs e)
            {
                Response.Write("Page_InitComplete<br/>");
            }
            protected void Page_PreLoad(object sender, EventArgs e)
            {
                Response.Write("Page_PreLoad<br/>");
            }
            protected void Page_Load(object sender, EventArgs e)
            {
                Response.Write("Page_Load<br/>");
            }
            protected void Page_LoadComplete(object sender, EventArgs e)
            {
                Response.Write("Page_LoadComplete<br/>");
            }
            protected void Page_PreRender(object sender, EventArgs e)
            {
                Response.Write("Page_PreRender<br/>");
            }
            protected void Page_PreRenderComplete(object sender, EventArgs e)
            {
                Response.Write("Page_PreRenderComplete<br/>");
            }
            protected void Page_SaveStateComplete(object sender, EventArgs e)
            {
                Response.Write("Page_SaveStateComplete<br/>");
            }
            protected void Page_Unload(object sender, EventArgs e)
            {
                //Response.Write("Page_Unload<br/>");
                int i = 0;
                i++;//这行代码是用来设置断点的,这里不能用Response.Write
            }   
       protected void Button2_Click(object sender, EventArgs e)
            {
                Response.Write("Button事件触发!<br/>");
            }

    运行后输出:
    Page_PreInit
    MasterPage_Init
    Page_Init
    Page_InitComplete
    Page_PreLoad
    Page_Load
    MasterPage_Load
    Page_LoadComplete
    Page_PreRender
    MasterPage_PreRender
    Page_PreRenderComplete
    Page_SaveStateComplete

    点击按钮后输出:
    Page_PreInit
    MasterPage_Init
    Page_Init
    Page_InitComplete
    Page_PreLoad
    Page_Load
    MasterPage_Load
    Button事件触发!
    Page_LoadComplete
    Page_PreRender
    MasterPage_PreRender
    Page_PreRenderComplete
    Page_SaveStateComplete

  • 相关阅读:
    shell脚本编程
    Linux系统C语言开发环境学习
    Linux系统用户管理及VIM配置
    实验二 Linux系统简单文件操作命令
    实验一 Linux系统与应用准备
    DS01-线性表
    c博客作业 指针
    C博客06-2019-结构体&文件
    c语言博客作业04 数组
    c语言博客作业03 函数
  • 原文地址:https://www.cnblogs.com/jasonwb/p/1851850.html
Copyright © 2011-2022 走看看