ASP.NET 页面的生命周期

    技术2026-08-13  1

    ASP.NET页面编程模式不同于传统Winform,用户请求页面后,经历的过程如下。

    1.用户HTTP GET方式请求服务器该页面,服务器执行初步处理。      (HTTP请求连接)

    2.服务器动态加载页面控件,处理后。返回静态网页给客户端(浏览器)。   (这时,HTTP连接断开)

    3.用户输入信息或进行菜单选项,单击按钮。

    4.页面回发给web服务器(HTTP POST方法),回发目标若无指定的话就是该页本身。     (HTTP连接)

    5.web服务器再次运行该页面,并使用用户的输入信息。

    6.页面执行通过编程进行的操作。

    7.页面将处理结果生成静态页面回发给客户端(浏览器)。            (HTTP连接断开)

     

     

    用户请求ASP.NET网页时,将创建该页面的新实例(无论是回发还是首次请求),该页执行处理,将标记呈现到客户端,然后该页被丢弃。当用户点击按钮回发数据,又将创建该页的新实例,然后执行处理,然后被丢弃。

     

     

    一个ASP.NET页面的生成,要经历如下几个阶段

     


     

    阶段 解释

     


     

    页面请求 发生在页面生命周期开始前。用户请求页面时,ASP.NET确定是否要分析和编译页面(从而开始页的声明周期),或 者发送缓存版本。

    开始 设置页面属性,Response、Request等。确定页面是首次请求还是回发页面,设置IsPostBack属性。

    页面初始化 初始化控件,。如果是回发页面,则回发数据尚未加载,控件属性值尚未还原为视图状态中的值。

    加载      加载期间,如果是回发页面,则从视图状态和控件状态恢复信息。

    验证      验证控件是否正确验证。

    回发事件处理      如果当前是回发页面,则调用事件处理程序。

    呈现      在呈现前,会针对页面保存所有控件的视图状态,在呈现阶段页面会对每个控件调用Render方法,将控件的输入写入      页面的Response属性的OutputStream中

    卸载                 完全呈现页面并发送给客户端,准备丢弃该页面,调用卸载,此时将卸载页面属性,并清理。


     

     

    各阶段发发生事件的可运行代码


     

    事件 方法 发生 重要事件解释

     


     

    PreInit Page_PreInit 初始化之前   确定IsPostBack属性。

    Init Page_Init 控件初始化 用该事件来读取或初始化控件的属性。

    InitComplete    Page_InitComplete 

    PreLoad Page_PreLoad 在Load事件之前 如果需要在Load之前对页或控件进行处理,可用该事件。

    Load Page_Load Page调用OnLoad 获取或设置控件属性,并建立数据库连接。

    控件事件 控件事件回传时发生 处理控件特定事件。

    LoadComplete Page_LoadComplete 加载完成时发生 对需要加载页面上所有其他控件的任务使用该事件。

    PreRender Page_PreRender 呈现前发生     使用该事件对页或控件内容进行最后更改。

    Render Page_Render 呈现阶段 如果创建自定义控件,通常要覆盖此方法以输出控件。

    Unload Page_Unload 先控件再页面 进行清理工作,卸载该页面。

    最新回复(0)