当前位置: 首页 > 文档资料 > ASP.NET 中文教程 >

生命周期(Life Cycle)

优质
小牛编辑
129浏览
2023-12-01

ASP.NET生命周期指定如何:

  • ASP.NET处理页面以生成动态输出
  • 应用程序及其页面被实例化和处理
  • ASP.NET动态编译页面

ASP.NET生命周期可以分为两组:

  • 应用生命周期
  • 页面生命周期

ASP.NET应用程序生命周期

应用程序生命周期包括以下阶段:

  • 用户请求访问应用程序资源,页面。 浏览器将此请求发送到Web服务器。

  • 统一管道接收第一个请求并发生以下事件:

    • 创建ApplicationManager类的对象。

    • 创建HostingEnvironment类的对象以提供有关资源的信息。

    • 编译应用程序中的顶级项目。

  • 响应对象已创建。 创建并初始化应用程序对象,如HttpContext,HttpRequest和HttpResponse。

  • 创建HttpApplication对象的实例并将其分配给请求。

  • 该请求由HttpApplication类处理。 此类引发了不同的事件来处理请求。

ASP.NET页面生命周期

请求页面时,会将其加载到服务器内存中,进行处理并发送到浏览器。 然后从内存中卸载它。 在每个步骤中,都可以使用方法和事件,可以根据应用程序的需要覆盖这些方法和事件。 换句话说,您可以编写自己的代码来覆盖默认代码。

Page类创建页面上所有控件的分层树。 除指令外,页面上的所有组件都是此控制树的一部分。 您可以通过向page指令添加trace =“true”来查看控制树。 我们将在'指令'和'事件处理'下覆盖页面指令和跟踪。

页面生命周期阶段是:

  • Initialization
  • 在页面上实例化控件
  • 恢复和维护国家
  • 执行事件处理程序代码
  • 页面渲染

理解页面循环有助于编写代码,以便在页面生命周期的任何阶段发生某些特定事情。 它还有助于编写自定义控件并在适当的时候初始化它们,使用视图状态数据填充其属性并运行控制行为代码。

以下是ASP.NET页面的不同阶段:

  • Page request - 当ASP.NET获取页面请求时,它决定是否解析和编译页面,或者是否存在页面的缓存版本; 相应地发送响应。

  • Starting of page life cycle - 在此阶段,设置Request和Response对象。 如果请求是旧请求或回发,则页面的IsPostBack属性设置为true。 还设置了页面的UICulture属性。

  • Page initialization - 在此阶段,通过设置UniqueID属性并应用主题,为页面上的控件分配唯一ID。 对于新请求,将加载回发数据,并将控件属性还原为视图状态值。

  • Page load - 在此阶段,使用视图状态和控件状态值设置控件属性。

  • Validation - 调用验证控件的验证方法,并且在成功执行时,页面的IsValid属性设置为true。

  • Postback event handling - 如果请求是回发(旧请求),则调用相关的事件处理程序。

  • Page rendering - 在此阶段,将保存页面的视图状态和所有控件。 该页面为每个控件调用Render方法,并且渲染的输出被写入页面的Response属性的OutputStream类。

  • Unload - 将呈现的页面发送到客户端,并卸载页面属性(如响应和请求)并完成所有清理。

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处理程序来处理此事件。