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 先控件再页面 进行清理工作,卸载该页面。