大家好,想问大家一个问题:ViewState的基本用法我知道,在分页的时候用过,用来保存本页回传的值,但是对于平时页面自动生成的ViewState很好奇,这里面到底保存了哪些值,如果禁用了会带来什么后果,希望大家能举出实际的例子说明一下,另外结合安全和性能考虑,什么时候用viewstate,什么时候不用,纠结....
解决方案 »
- 大家进来帮忙看看
- 关于用户是否存在的一个问题
- 想询问一下大家都用什么样的js库
- 如何加一个输出行,简单 在线等待
- 如果是今天新闻就显示new的图标,最后40分了
- 请教asp.net框架页,怎么从左框架传参数到右框架,又框架怎么接收参数
- 不知这个问题如何解决,请各位出手。如何在右边的框架网页的按钮事件里给左边的树加节点,利用node属性。
- 这种效果怎么做出来?
- 奇怪的数据库连接问题!
- 这条语句错在哪 Source.RowFilter = "Email not like '[a-z]%';
- 用户在线的功能怎样实现
- 类型“Button”的控件“ctl00_head_ctl00_Button1”必须放在具有 runat=server 的窗体标记内。
很多情况下保持控件的状态是必需的,压缩的ViewState有助于提高性能
System.IO.Compression
将不影响页面显ViewState持久化保存到服务器端的硬盘上
AJAX分页:
http://www.cnblogs.com/chenping-987123/archive/2011/02/14/1954640.html
你可以在你的页面运行以后看看,页面源代码文件中的_hidden这个控件的,value值,是多大就知道,页面的传输量有多大了。
这个是通过匹配 form 中该控件的变量名而自动完成的。这个只对 Load 事件加载之前创建的控件有效。
2. ViewState 不会自动重新创建任何通过代码动态创建的控件。
3. 不是用来保存用户信息的。仅仅保存本页的控件状态,而不能在页面之间传递。ViewState 是什么?ViewState 用来跟踪和保存控件的状态信息。否则这些信息可能会丢失,原因可能是这些值不随着 form 回发,或者根本就不在 page 的 html 中。
ViewState 中保存着代码中改变的控件属性,通过代码绑定到控件的任何数据,以及由用户操作触发,回发的任何更改。
ViewState 还提供了一个状态包(StateBag), 这是一个特殊的集合或字典(collection or dictionary), 可以用来保存,通过一个 key 来恢复任意的对象或者值。ViewState 的格式保存在表单中的 __VIEWSTATE 隐藏字段。是 Base64 编码过的,而不是加密!
但要加密也是可以的(设置 enableViewStateMac 来使用 machine key 进行 hash)
加密:设置 machineKey 验证, 但这必须在机器级别设置,需要更多的资源,所以不推荐。