ASP.Net原理篇 之 ViewState
来源:互联网 发布:mysql 电子书 编辑:程序博客网 时间:2024/05/22 15:41
之前说过了ASP.Net中的四种状态保持机制
今天就来说一下ViewState的运行原理
ViewState和Cookie一样 是一种客户端的状态保持机制 和Session不同 Session是基于服务端的状态保持机制
值得一提的是 ViewState是.Net中特有的特有的状态保持机制 在其他的语言中是没有的!!ViewState不是Session一样所有数据类型都支持 ViewState只能支持
String Intger Boolean Array ArrayList Hashtable
当关闭页面的时候ViewState也就不存在了 所以 ViewState 也是保存在浏览器缓存中的
ViewState的作用域是“页面级的”
怎么理解这句话呢 ? 我来举一个例子 您就明白了
假如我在Default.aspx这个页面是创建了个ViewState 那么这个ViewState的值只能在Default.aspx这个页面中使用
其他页面就不能使用了 就类似于一个全局变量
要说ViewState就不的不说一下“隐藏域”
何为隐藏域?
简单的理解就是一个隐藏的区域 在页面之间传递值的时候 用户看不到隐藏域的存在
也可以理解为一个变量 但是这个变量用户在界面上看不到的!!
使用VIewState的时候 就必须要借助于“隐藏域” 才能实现
好了 下面就来说一下ViewState的原理吧
先创建ViewState 创建ViewState非常的简单
这里必须要注意的时候 要是有ViewState 就必须加上 runat="server" 这句话 因为只有点击“提交”的时候(提交表单)隐藏域才能起作用 否则就和普通的HTML标签一样
来看原理图
下面 我来简单的介绍一下ViewState的原理
1.浏览器请求Default.aspx页面
2.在服务器端 发现创建的ViewState 这个时候 会自动创建一个名字叫做__VIEWSTATE(双下滑线 全部是大写)
的隐藏域 其隐藏域的值经过base64加密以后返回到浏览器端这一加密过程在页面生命周期
的SaveState事件中的SaveAllState方法中完成
3.当浏览器提交表单的时候 将__VIEWSTATE的隐藏域也一起提交到服务端 这个时候 页面生命周期的ReadState事件
的ReadAllState方法会将加密后的值反base64解密 最后将值赋值给名字叫做name的ViewState
4.最后来操作ViewState中的值
光说不练假把式 来看一下产生的 __VIEWSTATE(浏览器版本IE9)
我使用ViewStateDecoder2(ViewState查看器)来看一下值
看来之前说的是对的 至于为什么要加密 小弟还正在查资料中 请各位牛人们赐教。。。。。
以上就是我对ViewState的理解 由于个人能力有限 肯定有不对的地方 还请各位牛人指出 以便我不断学习 小弟万分万分感谢!!!!!!
- ASP.Net原理篇 之 ViewState
- asp.net viewstate原理
- ASP.NET之ViewState
- ASP.NET之ViewState
- Asp.net 2.0 ViewState原理
- asp .net 中 web ,ViewState 工作原理
- 小议优化ASP.NET应用性能之ViewState篇
- 小议优化ASP.NET应用性能之ViewState篇
- 优化ASP.NET应用性能之ViewState篇
- ASP.NET WebForm Best Practice 之ViewState
- ASP.NET控件学习笔记之ViewState
- Asp.Net之ViewState状态保持
- ASP.net状态保存机制及ViewState 工作原理
- ASP.NET中的ViewState
- ASP.NET ViewState 初探
- ASP.NET中的ViewState
- ASP.NET ViewState 初探
- ASP.NET ViewState 初探
- 激情似火的我,走过一个山头又一个山头;年轻幼稚的心灵,经受一次冷却又一次冷却.
- * 7-2 输入4个整数,求最大值
- 黑客精神祭 挖掘神秘黑客背后的故事
- 对UART接口的理解
- java开发中必用的一些东西
- ASP.Net原理篇 之 ViewState
- nginx源码分析(9)——filter模块
- SurfaceFlinger 这个核心服务层的机制
- 仿淘宝/蘑菇街形式,瀑布流效果 -- 固定列数
- iOS开发技巧3
- 简单的程序
- 有黑客精神的IT老兵与创业团队中坚力量——汤城
- Activity中UI框架基本概念
- 求两数的正差值