ASP.NET 页面的生命周期

来源:互联网 发布:淘宝视频 编辑:程序博客网 时间:2024/04/29 17:43

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中

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


 

 

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


 

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

 


 

PreInitPage_PreInit初始化之前 确定IsPostBack属性。

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

InitComplete   Page_InitComplete 

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

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

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

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

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

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

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

原创粉丝点击