pdf如何调整页面顺序 在aspx页面中事件的执行顺序[2]
在aspx页面中事件的执行顺序[2]
保存及显示
下一个方法是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方法 这个方法提供机会以便清空该页面中使用的非托管资源 如关闭打开的文件句柄 以前打开的数据库连接等 注意这个方法是在页面已经发送到客户端以后执行的 所以它只有影响服务器对象 并且它不会显示在页面的显示轨迹中 这就是页面的生存期 对于每一次请求都是这么运行的
二 精简版
Page 执行中将按照如下顺序激活事件 Page PreInit >Page Init >Page InitComplite >Page PreLoad >Page Load >Page LoadComplete >Page PreRender >
Page PreRenderComplete
如果页面从令一个页面继承 如BasePage:System Web UI Page 在BasePage中做了一些扩展 如权限检查 而其他页面从BasePage继承 则BasePage和最终Page的事件激活顺序是
UI PreInit >Page PreInit >UI Init >Page Init >UI InitComplite >Page InitComplite >UI PreLoad >Page PreLoad >UI Load >Page Load >UI LoadComplete >Page LoadComplete >UI PreRender >Page PreRender >UI PreRenderComplete >Page PreRenderComplete
如果使用了MasterPage 则MasterPage中的事件和ContentPage中的事件按照下面顺序激活
ContentPage PreInit
Master Init
ContentPage Init
ContentPage InitComplite
ContentPage PreLoad
ContentPage Load
Master Load
ContentPage LoadComplete
![pdf如何调整页面顺序 在aspx页面中事件的执行顺序[2]](http://img.zhputi.com/uploads/6cde/6cde4b50449f246ec89bd1659ed9349e21984.jpg)
ContentPage PreRender
Master PreRender
ContentPage PreRenderComplete
lishixinzhi/Article/program/net/201311/14985