首页 新闻 会员 周边 捐助

Viewsate的研究

0
悬赏园豆:10 [已解决问题] 解决于 2011-03-04 13:46

大家好,想问大家一个问题: ViewState的基本用法我知道,在分页的时候用过,用来保存本页回传的值,但是对于平时页面自动生成的ViewState很好奇,这里面到底保存了哪些值,如果禁用了会带来什么后果,希望大家能举出实际的例子说明一下,另外结合安全和性能考虑,什么时候用viewstate,什么时候不用,纠结....

双魂人生的主页 双魂人生 | 初学一级 | 园豆:63
提问于:2011-02-27 17:57
< >
分享
最佳答案
0

viewstate保存控件的状态,使得页面在往返的时候还能将控件的值保留下来,比如:你绑定了下拉框,如果没禁用viewstate的话,在postback后下拉框的值还有,如果你禁用了viewstate,在postback后下拉框就为空了!而且一些控件的复杂事件,比如,gridview的一些事件,都是需要viewstate的支持的

yixin841210 | 小虾三级 |园豆:1138 | 2011-02-27 23:57
其他回答(2)
0

平时页面自动生成的ViewState,主要是用来支持服务器控件事件机制的,如果将form的runat="server"属性去掉,就不会生成了,但同时支持事件的服务器控件也不能用了!

zhangzhilong | 园豆:210 (菜鸟二级) | 2011-02-27 18:04
如果禁用了ViewState呢
支持(0) 反对(0) 双魂人生 | 园豆:63 (初学一级) | 2011-02-27 18:09
那页面就不会保存postback前页面上的值。如:控件属性
支持(0) 反对(0) massinger | 园豆:706 (小虾三级) | 2011-02-27 22:35
0

保存了回传状态。比如你的页面请求中,服务器接到请求后第一件事,是把原有的viewstate字符解析并与page.aspx结合生成页面控件树。在经历了load事件后,再将编辑过的控件树解析成viewstate字符插入到你的页面中。如果你将它禁用,那么它就无法还原出你请求之前的页面状态,在后台看到的是最初的aspx页面。

可以看看这个便于理解、优化

http://www.cnblogs.com/xingshao/archive/2010/02/05/1664464.html

收获园豆:10
邢少 | 园豆:10926 (专家六级) | 2011-03-02 10:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册