ASP.NET生命周期如何指定?如下说明:
- ASP.NET处理页面以产生动态输出
- 应用程序及其页面被实例化和处理
- ASP.NET动态编译成页面
ASP.NET的生命周期可以分为两组:
- 应用程序生命周期
- 页面生命周期
ASP.NET应用程序生命周期
应用程序生命周期有以下几个阶段:
- 用户请求访问应用程序资源,页面。浏览器将此请求发送到Web服务器。
- 统一管道接收第一个请求,并发生以下事件:
ApplicationManager
类的一个对象被创建。- 创建
HostingEnvironment
类的一个对象来提供有关资源的信息。 - 编译应用程序中的顶级项目。
- 响应(
Response
)对象被创建。应用程序对象,如HttpContext
,HttpRequest
和HttpResponse
被创建和初始化。 HttpApplication
对象的一个实例被创建并分配给请求。- 该请求由
HttpApplication
类处理,这个类处理请求的不同事件。
ASP.NET页面生命周期
当一个页面被请求时,它被加载到服务器内存中,进行处理并发送到浏览器。 然后它从内存中卸载。在这些步骤的每个步骤中,都有可用的方法和事件,这些方法和事件可以根据应用程序的需要进行覆盖。换句话说,您可以编写自己的代码来覆盖默认代码。
Page
类创建页面上所有控件的分层树。页面上的所有组件(指令除外)都是此控件树的一部分。可以通过将trace =“true”
添加到页面指令来查看控件树。我们将涵盖页面指令,并在“指令”和“事件处理”下的跟踪。
页面生命周期阶段是:
- 初始化
- 实例化页面上的控件
- 恢复和维护状态
- 执行事件处理程序代码
- 页面渲染
了解页面循环有助于编写代码,使页面生命周期的任何阶段都能发生一些特定的事情。 它还有助于编写自定义控件并在正确的时间初始化它们,使用视图状态数据填充它们的属性并运行控制行为代码。
以下是ASP.NET页面的不同阶段:
编号 | 阶段 | 描述/说明 |
---|---|---|
1 | 页面请求 | 当ASP.NET获得一个页面请求时,它决定是否解析和编译该页面,或者会使用一个缓存的页面版本。相应地发送响应。 |
2 | 开始页面生命周期 | 在这个阶段,Request 和Response 对象被设置。如果请求是旧请求或回发,则页面的IsPostBack 属性设置为true 。页面的UICulture 属性也被设置。 |
3 | 页面初始化 | 在此阶段,通过设置UniqueID 属性并应用主题,页面上的控件被分配唯一ID。 对于新的请求,加载回发数据并将控件属性恢复为视图状态值。 |
4 | 页面加载 | 在此阶段,使用视图状态和控件状态值设置控件属性。 |
5 | 验证 | 验证控件的验证方法被调用,并在成功执行时,页面的IsValid 属性设置为true。 |
6 | 回发事件处理 | 如果请求是回发(旧请求),则调用相关的事件处理程序。 |
7 | 页面渲染 | 在这个阶段,页面和所有控件的查看状态被保存。页面为每个控件调用Render 方法,并将渲染的输出写入到页面的Response 属性的OutputStream 类中。 |
8 | 卸下/Unload | 呈现的页面被发送到客户端,并且页面属性(例如响应和请求)被卸载,并且所有清理完成。 |
一个请求的页面在处理完之后,首先被加载到服务器的内存中,并发送到浏览器。 最后它从服务器内存中卸载。 ASP.NET在页面生命周期的每个阶段提供方法和事件,我们可以在应用程序中使用。
ASP.NET页面生命周期事件
在页面生命周期的每个阶段,页面会引发一些事件,这些事件可以被编码。 事件处理程序基本上是一个函数或子例程,绑定到事件,使用声明性的属性,如Onclick
或处理句柄。
以下是页面生命周期事件:
编号 | 事件 | 描述 |
---|---|---|
1 | PreInit | PreInit 是页面生命周期中的第一个事件。它检查IsPostBack 属性并确定页面是否是回发。它设置主题和主页面,创建动态控件,并获取和设置配置文件属性值。可以通过重载OnPreInit 方法或创建Page_PreInit 处理程序来处理此事件。 |
2 | Init | Init 事件初始化控件属性,构建控件树。可以通过重载OnInit 方法或创建Page_Init 处理程序来处理此事件。 |
3 | InitComplete | InitComplete 事件允许跟踪视图状态。所有的控件都打开了视图状态跟踪。 |
4 | LoadViewState | LoadViewState 事件允许将视图状态信息加载到控件中。 |
5 | LoadPostData | 在这个阶段,所有输入字段的内容都是用<form> 标签定义的。 |
6 | PreLoad | PreLoad 发生在回发数据加载到控件中之前。可以通过重载OnPreLoad 方法或创建Page_PreLoad 处理程序来处理此事件。 |
7 | Load | 首先为页面引发Load 事件,然后递归地为所有子控件引发Load 事件。控制树中的控件已创建。可以通过重载OnLoad 方法或创建Page_Load 处理程序来处理此事件。 |
8 | LoadComplete | 加载过程完成,控制事件处理程序运行,页面验证发生。可以通过重载OnLoadComplete 方法或创建Page_LoadComplete 处理程序来处理此事件。 |
9 | PreRender | PreRender 事件在输出呈现之前发生。通过处理此事件,页面和控件可以在输出呈现之前执行任何更新。 |
10 | PreRenderComplete | 由于PreRender 事件是为所有子控件递归触发的,因此此事件将确保完成预渲染阶段。 |
11 | SaveStateComplete | 页面上的控制状态被保存个性化,控制状态和视图状态信息被保存,HTML标记被生成。这个阶段可以通过重写Render 方法或创建Page_Render 处理程序来处理。 |
12 | UnLoad | UnLoad 阶段是页面生命周期的最后阶段。它递归地提交所有控件的UnLoad 事件,最后为页面本身。最后的清理工作已经完成,所有的资源和引用(如数据库连接)都被释放了。可以通过修改OnUnLoad 方法或创建Page_UnLoad 处理程序来处理此事件。 |
上一篇:
ASP.NET开发环境配置
下一篇:
ASP.NET第一个程序