asp

位置:IT落伍者 >> asp >> 浏览文章

在aspx页面中事件的执行顺序[2]


发布日期:2022年12月08日
 
在aspx页面中事件的执行顺序[2]

保存及显示

下一个方法是SaveViewState不论是否是回传页面均会递归的执行以保存页面及其所有控件的ViewStateViewState基本上保存所有与定义在aspx中的原始值不同的值不管是被代码还是用户所改变注意控件值是根据他们在页面的控件树中的位置来保存的所以如果动态控件后来加到了错误的位置将会导致混乱

下一个方法是SavePageStateToPersistenceMedium真正的保存页面的ViewSate这个方法随同LoadPageStateFromPersistenceMediumg 一起被重写以便保存ViewState到Session或其它自定义数据而不是用隐藏域这对于低带宽的用户来说是很有帮助的并且对于移动设备来说Session是默认设置下面这篇文章描述了使用以上两种方式保存ViewState的具体细节注意在Aspnet中有个BugAspnet要求必须提交__viewstate字段即使是空的

下一个方法是Render方法该方法递归的创建并发送相应控件的html给浏览器这个方法被一些页面模板方案重写以添加一些通用的页面头与脚而不使用服务器控件他们总是有一些额外的东西注意这儿的修改只能使用纯HTML因为控件在这儿已经被生成了您可以用StringBuilderStringWriterHtmlTextWriter捕获相应的HTML输出

最后的方法是OnUnload这个方法会调用相应的Dispose方法这个方法提供机会以便清空该页面中使用的非托管资源如关闭打开的文件句柄以前打开的数据库连接等注意这个方法是在页面已经发送到客户端以后执行的所以它只有影响服务器对象并且它不会显示在页面的显示轨迹中这就是页面的生存期对于每一次请求都是这么运行的

精简版

Page 执行中将按照如下顺序激活事件PagePreInit>PageInit>PageInitComplite>PagePreLoad>PageLoad>PageLoadComplete>PagePreRender>

PagePreRenderComplete

如果页面从令一个页面继承如BasePage:SystemWebUIPage在BasePage中做了一些扩展如权限检查而其他页面从BasePage继承则BasePage和最终Page的事件激活顺序是

UIPreInit>PagePreInit>UIInit>PageInit>UIInitComplite>PageInitComplite>UIPreLoad>PagePreLoad>UILoad>PageLoad>UILoadComplete>PageLoadComplete>UIPreRender>PagePreRender>UIPreRenderComplete>PagePreRenderComplete

如果使用了MasterPage则MasterPage中的事件和ContentPage中的事件按照下面顺序激活

ContentPagePreInit

MasterInit

ContentPageInit

ContentPageInitComplite

ContentPagePreLoad

ContentPageLoad

MasterLoad

ContentPageLoadComplete

ContentPagePreRender

MasterPreRender

ContentPagePreRenderComplete

[] [] []

               

上一篇:用ASP在线创建Word与Excel文档

下一篇:在aspx页面中事件的执行顺序[1]