与 ASP.NET 1.x 相比,ASP.NET 2.0 提供了一种粒度更细的页面生命周期方法栈。这些添加的方法为 Web 开发人员提供了更高级的控制。可以通过 ASP.NET 页上的 Page 对象来访问这些事件。

表 1 显示综合方法列表。Method 列显示实际事件方法名称,Active 列表示该事件是否总处于活动状态或者仅在 PostBack 操作期间是活动的。例如,新方法 TestDeviceFilter 可用来确定哪种设备筛选器就绪,并用这些信息来决定如何显示页面。另一方面,新方法 LoadControlState 只有在 PostBack 期间才激发。可以重写该方法(结合 SaveControlState)来在 PostBack 期间创建保存和还原控件状态的备选序列化方案。

表 1. 页面生命周期方法
方法 活动

Constructor

Always

Construct

Always

TestDeviceFilter

Always

AddParsedSubObject

Always

DeterminePostBackMode

Always

OnPreInit

Always

LoadPersonalizationData

Always

InitializeThemes

Always

OnInit

Always

ApplyControlSkin

Always

ApplyPersonalization

Always

OnInitComplete

Always

LoadPageStateFromPersistenceMedium

Always

LoadControlState

Always

LoadViewState

Always

ProcessPostData1

Always

OnPreLoad

Always

OnLoad

Always

ProcessPostData2

Always

RaiseChangedEvents

Always

RaisePostBackEvent

Always

OnLoadComplete

Always

OnPreRender

Always

OnPreRenderComplete

Always

SavePersonalizationData

Always

SaveControlState

Always

SaveViewState

Always

SavePageStateToPersistenceMedium

Always

Render

Always

OnUnload

Always

查看页面生命周期的底层细节,我们可以看到 ASP.NET 2.0 中提供的许多功能(例如主题和个性化)将在什么地方容易实现。例如,主题在 IntializeThemes 事件中处理,而个性化数据将在 LoadPersonalizationData 中加载并稍后用于 ApplyPersonalization 方法。请注意,就哪一个 UI 元素将决定 Web 应用程序的最终外观和感觉而言,方法的顺序非常重要。