与 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 应用程序的最终外观和感觉而言,方法的顺序非常重要。