科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道ASP.NET页面事件:顺序与回传详解

ASP.NET页面事件:顺序与回传详解

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

     一、初始化   ?当页面被提交请求第一个方法永远是构造函数。您可以在构造函数里面初始一些自定义属性或对象,不过这时候因为页面还没有被完全初始化所以多少会有些限制。特别地,您需要使用HttpContext对象。

作者:中国IT实验室 来源:中国IT实验室 2007年10月2日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

  

  四、保存及显示

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

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

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

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

  表1:页面事件总结

  方法回传控件

  ConstructorAlwaysAll

  AddParsedSubObjectAlwaysAll

  DeterminePostBackModeAlwaysPage

  OnInitAlwaysAll

  LoadPageStateFromPersistenceMediumPostBackPage

  LoadViewStatePostBackAll

  ProcessPostData1PostBackPage

  OnLoadAlwaysAll

  ProcessPostData2PostBackPage

  RaiseChangedEventsPostBackPage

  RaisePostBackEventPostBackPage

  OnPreRenderAlwaysAll

  SaveViewStateAlwaysAll

  SavePageStateToPersistenceMediumAlwaysPage

  RenderAlwaysAll

  OnUnloadAlwaysAll

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件