转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
ASP.NET 页面对象模型         ★★★★

ASP.NET 页面对象模型

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2399 更新时间:2009/4/23 10:50:47
 

阶段

页面事件

可重定义的方法

页面初始化

Init

 

视图状态加载

 

LoadViewState

回传数据处理

 

控件里实现了IPostBackDataHandler接口的LoadPostData方法

页面加载

Load

 

回传数据变化检查

 

控件里实现了IPostBackDataHandler接口的RaisePostDataChangedEvent方法

回传事件处理

控件里定义的回传事件

控件里实现了IPostBackEventHandler接口的RaisePostBackEvent方法

页面预返回阶段

PreRender

 

页面返回阶段

 

Render

页面卸载阶段

Unload

 

 

上表中列出的阶段有的在页面级别是不可见的,他们只是在服务器控件的作者编写继承于Page的类时会使用到。Init , Load , PreRender , Unload,再加上定义在内嵌控件中的回传处理事件,他们构成了页面的整个生命周期。

 

各个阶段的执行

 

页面生命周期的第一阶段是初始化。这个阶段被Init事件所描述,这个事件在控件树被构建出来后执行。换句话说,当Init事件发生时,所有在.aspx文件中静态声明的控件被实例化并被赋予了默认值。在Init事件中可以初始化任何的在页面生命周期里需要的设置。例如:在这个阶段,控件可以加载外部的摸版文件或者是为事件建立处理句柄。需要注意的是,任何的视图状态信息在这个阶段里是不能用的。

 

紧接着初始化结束后,页面构架为页面加载视图状态。视图状态是 名称/值 对的集合,控件或页面在这里保存的数据在整个web请求过程中必须是稳固的。视图状态代表着页面的上下文。典型的,它保存着页面上次在服务器上被执行时控件的状态。视图状态在会话开始的第一个页面请求时是空的。在默认情况下,试图状态被保存在一个隐藏域里,这个隐藏域是被自动添加到页面里的。这个隐藏域的名称是 __VIEWSTATE。如果覆盖了LoadViewState方法——在Control类里被声明为受保护的方法——组件开发者可以控制视图状态的保存和它是如何和内部状态形成映射。

 

象LoadPageStateFormPersistenceMedium这样的方法和与其相对应的SavePageStateToPersistenceMedium方法可以用来加载或者保存视图状态到其他的存储中介里,例如:会话、数据库或者是服务器上的文件。和LoadViewState方法不相同的是,上面提到的方法只能在Page的继承类里使用。

 

一旦视图状态加载完毕了,页面里的控件被赋予了和上一次发送到浏览器时一样的状态。下一个阶段是将他们更新,使之与服务器端发生的变化相一致。在回传数据处理阶段,控件更新他们的状态,使之和客户端的HTML元素的状态相一致。例如,服务器控件TextBox有和它相对应的HTML控件<input type=text>。在回传数据阶段,TextBox控件将得到<input>标签的值,并且用他来更新他的内部状态。每一个控件都可以从回传数据中取得自己数据的能力,并且把自己的状态更新。TextBox控件将更新它的Text属性,同样的,CheckBox控件也会将他们的Checked属性刷新。服务器控件和HTML元素的匹配是通过两者的ID来进行的。

 

在回传数据处理的最后阶段,所有的页面控件反映了上一个被更新的状态,这些都是由于客户端的输入变化所引起的。接下来,Load事件将被页面执行。

 

有一些控件,在两次请求中如果某些敏感属性发生了变化,他们需要对此作出响应,并且完成一定的任务。例如,如果客户端的textbox控件的文本发生变化,这个控件就激发了TextChanged事件。根据自客户端的数据,如果控件的一个或多个属性发生了变化,每一个控件都可以精确的激发合适的事件来处理。这些控件实现了IPostBackDataHandler接口,这个接口中的LoadPostData方法在Load事件之后就被执行了。通过重定义LoadPostData方法,控件可以验证两次请求中发生的变化并且激起相关的事件处理程序。

 

在一个页面周期中的关键事件是那些由客户端事件激发在服务器执行一段代码的事件。例如,当用户点击一个按钮,页面就需要回传。这个事件的处理是从按钮ID和值的收集开始的。如果控件是实现了IPostBackEventHandler接口(Button和LinkButton就是这样的情况),页面构架将调用RaisePostBackEvent方法。这个方法的具体情况是取决于控件的类型的。在上面提到的Button和LinkButton控件,这个方法就将寻找Click事件处理程序。

 

处理了回传事件之后,页面就准备被发送出去了。这个阶段是从PreRender事件开始的。这对于控件来说,那些需要在视图信息被保存与结果被发送之前这段时间里执行的动作,这是一个很好的时机。下一步就是SaveViewState ,所有的空间和页面本身就把视图状态的集合内容保存起来。接下来,视图状态被串行化、哈希编码、Base64 编码,并且保存在__VIEWSTATE隐藏域里。

 

各个控件的发送机制可以通过重定义Render方法来改变。这个方法构建了一个HTML writer对象,用它来为控件产生HTML代码。对Page类里Render方法的默认执行包含了对所有成员控件的递归调用。页面为每一个控件调用一次Render方法,并缓冲HTML输出。

上一页  [1] [2] [3]  下一页


[C语言系列]NET 中C#的switch语句的语法  [系统软件]托拽Explore中的文件到VB.net的窗口
[系统软件]Boost库在XP+Visual C++.net中的安装  [常用软件]新配色面板:Paint.Net3.0RC1官方下载
[常用软件]用内建的“Net Meeting”聊天  [VB.NET程序]Henry的VB.NET之旅(三)—共享成员
[VB.NET程序]Henry的VB.NET之旅(二)—构造与析构  [VB.NET程序]Henry的VB.NET之旅(一)—失踪的窗体
[VB.NET程序]在托盘上显示Balloon Tooltip(VB.NET)  [VB.NET程序]Henry手记-VB.NET中动态加载Treeview节点(二)
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台