历史事件发生的先后顺序 ASP.NET页面事件:顺序与回传详解[2]
ASP.NET页面事件:顺序与回传详解[2]
![历史事件发生的先后顺序 ASP.NET页面事件:顺序与回传详解[2]](http://img.zhputi.com/uploads/d41d/d41d8cd98f00b204e9800998ecf8427e0.jpg)
四 保存及显示
·下一个方法是SaveViewState 不论是否是回传页面 均会递归的执行以保存页面及其所有控件的ViewState ViewState基本上保存所有与定义在aspx中的原始值不同的值 不管是被代码还是用户所改变 注意控件值是根据他们在页面的控件树中的位置来保存的 所以如果动态控件后来加到了错误的位置将会导致混乱
·下一个方法是SavePageStateToPersistenceMedium真正的保存页面的ViewSate 这个方法随同LoadPageStateFromPersistenceMediumg 一起被重写以便保存ViewState到Session或其它自定义数据 而不是用隐藏域 这对于低带宽的用户来说是很有帮助的 并且对于移动设备来说 Session是默认设置 下面这篇文章描述了使用以上两种方式保存ViewState的具体细节 注意在Asp net中有个Bug Asp net要求必须提交__viewstate字段 即使是空的
·下一个方法是Render方法 该方法递归的创建并发送相应控件的给浏览器 这个方法被一些页面模板方案重写以添加一些通用的页面头与脚而不使用服务器控件 他们总是有一些额外的东西 注意这儿的修改只能使用纯HTML 因为控件在这儿已经被生成了 您可以用StringBuilder StringWriter HtmlTextWriter捕获相应的HTML输出
· 最后的方法是OnUnload 这个方法会调用相应的Dispose方法 这个方法提供机会以便清空该页面中使用的非托管资源 如关闭打开的文件句柄 以前打开的数据库连接等 注意这个方法是在页面已经发送到客户端以后执行的 所以它只有影响服务器对象 并且它不会显示在页面的显示轨迹中 这就是页面的生存期 对于每一次请求都是这么运行的
表 页面事件总结
方法回传控件
ConstructorAlwaysAll
AddParsedSubObjectAlwaysAll
DeterminePostBackModeAlwaysPage
OnInitAlwaysAll
LoadPageStateFromPersistenceMediumPostBackPage
LoadViewStatePostBackAll
ProcessPostData PostBackPage
OnLoadAlwaysAll
ProcessPostData PostBackPage
RaiseChangedEventsPostBackPage
RaisePostBackEventPostBackPage
OnPreRenderAlwaysAll
SaveViewStateAlwaysAll
SavePageStateToPersistenceMediumAlwaysPage
RenderAlwaysAll
OnUnloadAlwaysAll
lishixinzhi/Article/program/net/201311/15270