Asp.net2.0页面的生命周期 (2)
八.保存ViewState(SaveViewState)
所有对页面控件的修改完成后viewstate就被保 存了。对像的状态数据还是保留在隐藏的<input>控件里面,呈现给Html的对象状态数据也是从这里取得的。在 SaveViewState事件中,其值能被保存到viewstate对象,然而这时在页面上控件的修改却不能了。你可以用SaveViewState来 重载这一步,图示如下:
|
|
|
|
| 九.呈递给Html(Render) |
| 运用Html创建给浏览器输出的页面的时候Render事件就发生了。在Render事件过程中,页面调用其中的对象将 它们呈递给Html。然后,页面就可以以Html的形式被用户的浏览器访问了。当Render事件被重载时,开发者可以编写自定义的Html代码使得原先 生成的Html都无效而按照新的Html来组织页面。Render方法将一个HtmlTextWriter对象作为参数并用它将Html在浏览器上以网页 的形式显示。这时仍然可以做一些修改动作,不过它们只是客户端的一些变化而已了。你可以重载Render事件,图示如下: |
|
|
|
|
| 十.销毁对象(Page_UnLoad) |
| 在呈递给Html完成后,所有的对象都应被销毁。在Dispose事件中,你应该销毁所有在建立这个页面时创建的对象。这时,所有的处理已经完毕,所以销毁任何剩下的对象都是不会产生错误的,包括页面对象。你可以重载Dispose事件。 |
| 全文总结 |
以上就是Asp.net页面生命周期中的几个主要事件。每次我们请求一个Asp.net页面时,我们都经历着同样的过程:从初始化对象到销毁对象。 通过了解Asp.net页面的内部运行机制,我相信大家在编写、调试代码的时候会更加游刃有余的。不过整个页面的生命周期的方法如下:
| 方法 | 活动 |
| 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 中加载并稍后用于 的顺序非常重要。
ASP.NET页面生命周期详解
本文深入探讨了ASP.NET页面的生命周期,包括初始化、保存ViewState、呈现给HTML、销毁对象等关键事件,帮助开发者更好地理解页面内部运行机制。



被折叠的 条评论
为什么被折叠?



