- ASP.NET 教程
- ASP.NET - 首页
- ASP.NET - 简介
- ASP.NET - 环境
- ASP.NET - 生命周期
- ASP.NET - 第一个示例
- ASP.NET - 事件处理
- ASP.NET - 服务器端
- ASP.NET - 服务器控件
- ASP.NET - HTML 服务器控件
- ASP.NET - 客户端
- ASP.NET - 基本控件
- ASP.NET - 指令
- ASP.NET - 状态管理
- ASP.NET - 验证器
- ASP.NET - 数据库访问
- ASP.NET - ADO.net
- ASP.NET - 文件上传
- ASP.NET - 广告轮播
- ASP.NET - 日历控件
- ASP.NET - 多视图
- ASP.NET - 面板控件
- ASP.NET - AJAX 控件
- ASP.NET - 数据源
- ASP.NET - 数据绑定
- ASP.NET - 自定义控件
- ASP.NET - 个性化
- ASP.NET - 错误处理
- ASP.NET - 调试
- ASP.NET - LINQ
- ASP.NET - 安全性
- ASP.NET - 数据缓存
- ASP.NET - Web 服务
- ASP.NET - 多线程
- ASP.NET - 配置
- ASP.NET - 部署
- ASP.NET 资源
- ASP.NET - 快速指南
- ASP.NET - 有用资源
- ASP.NET - 讨论
ASP.NET - 生命周期
ASP.NET 生命周期指定了如何
- ASP.NET 处理页面以生成动态输出
- 应用程序及其页面被实例化和处理
- ASP.NET 动态编译页面
ASP.NET 生命周期可以分为两组
- 应用程序生命周期
- 页面生命周期
ASP.NET 应用程序生命周期
应用程序生命周期具有以下阶段
用户请求访问应用程序资源(一个页面)。浏览器将此请求发送到 Web 服务器。
统一管道接收第一个请求,并发生以下事件
创建 ApplicationManager 类的对象。
创建 HostingEnvironment 类的对象以提供有关资源的信息。
编译应用程序中的顶级项目。
创建响应对象。创建并初始化应用程序对象,例如 HttpContext、HttpRequest 和 HttpResponse。
创建 HttpApplication 对象的实例并将其分配给请求。
HttpApplication 类处理请求。此类引发不同的事件来处理请求。
ASP.NET 页面生命周期
当请求页面时,它被加载到服务器内存中,进行处理,然后发送到浏览器。然后它从内存中卸载。在每个步骤中,都提供了方法和事件,可以根据应用程序的需要覆盖这些方法和事件。换句话说,您可以编写自己的代码来覆盖默认代码。
Page 类创建页面上所有控件的分层树。页面上的所有组件(指令除外)都是此控件树的一部分。您可以通过将 trace="true" 添加到页面指令中来查看控件树。我们将在“指令”和“事件处理”下介绍页面指令和跟踪。
页面生命周期阶段如下
- 初始化
- 实例化页面上的控件
- 状态的恢复和维护
- 执行事件处理程序代码
- 页面呈现
了解页面周期有助于编写代码,以便在页面生命周期的任何阶段执行某些特定操作。它还有助于编写自定义控件并在正确的时间初始化它们,使用视图状态数据填充其属性并运行控件行为代码。
以下是 ASP.NET 页面的不同阶段
页面请求 - 当 ASP.NET 获取页面请求时,它会确定是解析和编译页面,还是使用页面的缓存版本;相应地发送响应。
页面生命周期开始 - 在此阶段,设置 Request 和 Response 对象。如果请求是旧请求或回发,则将页面的 IsPostBack 属性设置为 true。还设置页面的 UICulture 属性。
页面初始化 - 在此阶段,通过设置 UniqueID 属性为页面上的控件分配唯一 ID,并应用主题。对于新请求,加载回发数据并将控件属性恢复为视图状态值。
页面加载 - 在此阶段,使用视图状态和控件状态值设置控件属性。
验证 - 调用验证控件的 Validate 方法,并在其成功执行后,将页面的 IsValid 属性设置为 true。
回发事件处理 - 如果请求是回发(旧请求),则调用相关的事件处理程序。
页面呈现 - 在此阶段,保存页面和所有控件的视图状态。页面为每个控件调用 Render 方法,呈现的输出写入页面的 Response 属性的 OutputStream 类。
卸载 - 呈现的页面发送到客户端,并且页面属性(例如 Response 和 Request)被卸载,并完成所有清理工作。
ASP.NET 页面生命周期事件
在页面生命周期的每个阶段,页面都会引发一些可以编码的事件。事件处理程序基本上是绑定到事件的功能或子例程,使用声明性属性(如 Onclick 或 handle)。
以下是页面生命周期事件
PreInit - PreInit 是页面生命周期中的第一个事件。它检查 IsPostBack 属性并确定页面是否为回发。它设置主题和母版页,创建动态控件,并获取和设置配置文件属性值。可以通过重载 OnPreInit 方法或创建 Page_PreInit 处理程序来处理此事件。
Init - Init 事件初始化控件属性,并构建控件树。可以通过重载 OnInit 方法或创建 Page_Init 处理程序来处理此事件。
InitComplete - InitComplete 事件允许跟踪视图状态。所有控件都打开视图状态跟踪。
LoadViewState - LoadViewState 事件允许将视图状态信息加载到控件中。
LoadPostData - 在此阶段,处理使用 <form> 标记定义的所有输入字段的内容。
PreLoad - PreLoad 发生在回发数据加载到控件之前。可以通过重载 OnPreLoad 方法或创建 Page_PreLoad 处理程序来处理此事件。
Load - 首先为页面引发 Load 事件,然后递归地为所有子控件引发。创建控件树中的控件。可以通过重载 OnLoad 方法或创建 Page_Load 处理程序来处理此事件。
LoadComplete - 加载过程完成,运行控件事件处理程序,并进行页面验证。可以通过重载 OnLoadComplete 方法或创建 Page_LoadComplete 处理程序来处理此事件
PreRender - PreRender 事件发生在输出呈现之前。通过处理此事件,页面和控件可以在输出呈现之前执行任何更新。
PreRenderComplete - 由于 PreRender 事件会递归地为所有子控件触发,因此此事件确保预呈现阶段的完成。
SaveStateComplete - 保存页面上控件的状态。保存个性化、控件状态和视图状态信息。生成 HTML 标记。此阶段可以通过重写 Render 方法或创建 Page_Render 处理程序来处理。
UnLoad - UnLoad 阶段是页面生命周期的最后一个阶段。它递归地为所有控件引发 UnLoad 事件,最后为页面本身引发。完成最终清理工作,并释放所有资源和引用(如数据库连接)。可以通过修改 OnUnLoad 方法或创建 Page_UnLoad 处理程序来处理此事件。