ASP.NET 页面生命周期

2024 年 8 月 29 日 | 阅读 3 分钟

在 ASP.NET 中,一个网页有一个执行生命周期,其中包括各个阶段。 这些阶段包括初始化、实例化、恢复和维护状态等。理解页面生命周期是必要的,这样我们就可以在任何阶段放置自定义代码来执行我们的业务逻辑。

页面生命周期阶段

下表包含 ASP.NET 网页的生命周期阶段。

阶段描述
页面请求此阶段发生在生命周期开始之前。 当用户请求页面时,ASP.NET 会解析并编译该页面。
开始在此阶段,设置页面属性,例如 Request 和 Response。 它还确定请求类型。
初始化在此阶段,设置每个控件的 UniqueID 属性。 将母版页应用于页面。
加载在此阶段,如果页面请求是回发,则控件属性将加载信息。
回发事件处理在此阶段,如果页面请求是回发,则调用事件处理程序。 之后,将调用所有验证器控件的 Validate 方法。
渲染在渲染之前,将保存页面的视图状态以及所有控件。 在渲染阶段,页面会为每个控件调用 Render 方法,提供一个文本编写器,该编写器将其输出写入页面的 Response 属性的 OutputStream 对象。
卸载在此阶段,请求的页面已完全呈现,并准备终止。 在此阶段,所有属性都被卸载并执行清理。

请求的页面首先加载到服务器内存中,之后进行处理并发送到浏览器。 最后,它从服务器内存中卸载。 ASP.NET 在页面生命周期的每个阶段都提供了方法和事件,我们可以在应用程序中使用它们。 在下表中,我们列出了事件。

ASP.NET 生命周期事件

页面事件典型用途
PreInit(预初始化)此事件在启动阶段完成后以及初始化阶段之前引发。
Init(初始化)此事件在所有控件都已初始化之后发生。
我们可以使用此事件读取或初始化控件属性。
InitComplete(初始化完成)此事件发生在页面初始化阶段的末尾。
我们可以使用此事件对视图状态进行更改,我们希望确保这些更改在下次回发后仍然存在。
PreLoad(预加载)此事件在将回发数据加载到控件中之前发生。
加载此事件首先为页面引发,然后递归地为所有子控件引发。
控件事件此事件用于处理特定控件事件,例如按钮控件的 Click 事件。
LoadComplete(加载完成)此事件在事件处理阶段的末尾发生。
我们可以使用此事件来执行需要页面上的所有其他控件都已加载的任务。
PreRender(预呈现)此事件在页面对象创建了呈现页面所需的所有控件之后发生。
PreRenderComplete(预呈现完成)此事件在每个其 DataSourceID 属性已设置的已绑定数据控件调用其 DataBind 方法之后发生。
SaveStateComplete(保存状态完成)在页面和所有控件的视图状态和控件状态都已保存之后引发。
Render(呈现)这并非一个事件;相反,在处理的这个阶段,Page 对象在每个控件上调用此方法。
卸载此事件为每个控件以及页面引发。