ASP.NET 页生命周期概述(小结)

2019-05-25 09:24:40王振洲

下表列出了最常用的页生命周期事件。实际的事件比列出的事件要多。但是,它们不用于大多数页处理方案。而是主要由 ASP.NET 网页上的服务器控件使用,以初始化和呈现它们本身。如果要编写自己的 ASP.NET 服务器控件,则需要详细了解这些阶段。有关创建自定义控件的信息,请参见开发自定义 ASP.NET 服务器控件。

页事件典型使用

Page_PreInit

    使用 IsPostBack 属性确定是否是第一次处理该页。

    创建或重新创建动态控件。

    动态设置主控页。

    动态设置 Theme 属性。

    读取或设置配置文件属性值。

    注意如果请求是回发请求,则控件的值尚未从视图状态还原。如果在此阶段设置控件属性,则其值可能会在下一阶段被改写。

    Page_Init

      读取或初始化控件属性。

      Page_Load

        读取和更新控件属性。

        Control events

        执行特定于应用程序的处理:

          如果页包含验证程序控件,请在执行任何处理之前检查页和各个验证控件的 IsValid 属性。

          处理特定事件,如 Button 控件的 Click 事件。

          Page_PreRender

            对页的内容进行最后更改。

            Page_Unload

            执行最后的清理工作,可能包括:

              关闭打开的文件和数据库连接。

              完成日志记录或其他特定于请求的任务。

              注意在卸载阶段,页及其控件已被呈现,因此无法对响应流做进一步更改。如果尝试调用方法(如 Response.Write 方法),则该页将引发异常。

              其他的页生命周期注意事项

              请注意有关页生命周期的以下附加信息:

                各个 ASP.NET 服务器控件都有自己的生命周期,该生命周期与页生命周期类似。例如,在相应的页事件期间将调用控件的 Init 和 Load 方法。如果页上包含控件,则将首先调用控件的 Init 方法,然后再调用页的 Init 方法。但是,将在调用控件的 Load 方法之前先调用页的 Load 方法。

                通过处理控件的事件,可以自定义控件的外观或内容。例如,所有的控件都将引发 Init、Load 和 Unload 事件,但是页开发人员通常不处理这些事件。而是通常处理特定于控件的事件,如 Button 控件的Click 事件和 ListBox 控件的 SelectedIndexChanged 事件。在某些情况下,可能也需处理控件的 DataBinding 或 DataBound 事件。有关更多信息,请参见各个控件的类参考主题以及开发自定义 ASP.NET 服务器控件。