asp.net 视图状态简介
2014-08-13 23:45
211 查看
在asp.net开发的应用程序中,当某个页面被请求时,它的类及其所包含的服务器控件会负责处理请求,呈现HTML输出,并随后发回客户端.由于HTTP协议的固有特性,客户端与服务器间的通信是无状态且非连接的.而实际的应用程序需要状态,以便维护同一页面的后续调用.使用asp或其他服务器端开发平台(如jsp,php),程序员必须负责状态的存储和恢复.尽管基于无状态的协议,但以这种方式,从客户端体验到的是连续的执行过程,然而,这只是一种表象.
连续性所导致的这种现象,一方面与页面的设计和工作方式有关,另一方面是asp.net页面视图状态造成的.与此同时,服务器端控件也发挥着重要作用.简而言之,在页面将其内容呈现为html之前,页面要将自身及其所包含的控件的状态信息存储在持久性介质(通常是隐藏字段)中.当页面回发后,其状态会从隐藏字段中被反序列化,用于对申明在页面布局中的服务器控件实例进行初始化.
每个页面实例有其特有的视图状态,因为该信息嵌入在html中,这样做的好处是,控件会以上一次创建的视图状态(即该页最后一次被呈现发送到客户端时的状态)的值进行初始化.此外,页面周期中还会有一个阶段,将以存储的状态与由客户端做出的更新合并.在回发后,页面执行时,它会发现一个有状态的且更新过的上下文,就像工作在连续的对点连接上一样.
这里做了两个假设,第一个假设是,页面总是投递给自身,并携带着状态信息.第二个假设是,服务器端控件必须带有runat=server属性,以便在页面回发后具有"生命力".
连续性所导致的这种现象,一方面与页面的设计和工作方式有关,另一方面是asp.net页面视图状态造成的.与此同时,服务器端控件也发挥着重要作用.简而言之,在页面将其内容呈现为html之前,页面要将自身及其所包含的控件的状态信息存储在持久性介质(通常是隐藏字段)中.当页面回发后,其状态会从隐藏字段中被反序列化,用于对申明在页面布局中的服务器控件实例进行初始化.
每个页面实例有其特有的视图状态,因为该信息嵌入在html中,这样做的好处是,控件会以上一次创建的视图状态(即该页最后一次被呈现发送到客户端时的状态)的值进行初始化.此外,页面周期中还会有一个阶段,将以存储的状态与由客户端做出的更新合并.在回发后,页面执行时,它会发现一个有状态的且更新过的上下文,就像工作在连续的对点连接上一样.
这里做了两个假设,第一个假设是,页面总是投递给自身,并携带着状态信息.第二个假设是,服务器端控件必须带有runat=server属性,以便在页面回发后具有"生命力".
相关文章推荐
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)
- ASP.NET 实践:在视图状态中保存值
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)
- ASP.NET Post页面及验证视图状态MAC失败问题的正确解决办法
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)
- asp.net控件开发(一)简单属性、视图状态、控件状态
- 关于Asp.net 页面动态加载用户控件,出现“未能加载视图状态”的原因
- 利用ASP.Net状态保存的视图机制记录网页内部参数值
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)
- 保护 ASP.NET 视图状态
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)
- ASP.NET 状态视图概览
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)
- ASP.NET 会话状态简介
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)
- Asp.net 2.0 页面出现“未能加载视图状态...”错误的解决办法(作者:海雅)
- ASP.NET视图状态验证MAC失败 解决办法
- asp.net 未能加载视图状态
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)