日期:2014-05-17  浏览次数:20528 次

关于ViewState
1 ViewState实现机制。
2 大量使用ViewState对程序的性能影响。

目前只想到这两个,其他的再补充,希望高手们帮忙解释下ViewState,谢谢。

------解决方案--------------------
就在当前页面中保存数据的. 

像session.是会话级别的.只要会话没有过期.session中存的数据就在. 

viewstate是页面级别的.只要这个页面在.viewstate中存的数据就在. 

就是说viewstate中存的数据只能在声明该变量的页面中使用. 

比如在某页的page_load中声明了:ViewState["test"]="fdasfdsa"; 

那么在该页中的任何一个方法中都可以使用ViewState["test"]来直接得到值"fdsafdsa".


------解决方案--------------------
反正是不好,但我说不好 :-)
------解决方案--------------------
能不用,就不用...
------解决方案--------------------
如果没有用它 就会产生很多不必要的资源 
如果有了 就不要计较那些了
------解决方案--------------------
http://www.cnitblog.com/yhf119/archive/2007/05/08/26728.html
------解决方案--------------------
1 ViewState实现机制。
将页面状态保持到一个加密的隐藏变量中,你可以将数据写入到viewstate中,然后通过浏览器打开的时候,查看源文件,里面一堆乱七八糟的代码,就是viewstate数据。
2 大量使用ViewState对程序的性能影响。
要理解对程序性能,需要清楚原理和执行过程
如果页面打开viewstate后,无论你是否在viewstate中写入数据,当页面提交的时候,都需要将页面控件中所有的数据值收集起来,post到服务器去。
收集数据的过程很快完成,而且是在浏览器中执行的,性能可以忽略不计。
post大量数据就比较痛苦了,影响主要是在网络带宽上。如果是企业内部局域网,也基本上可以不管。因此很多企业网站用这个东西,非常方便。但是门户网站肯定不能乱用。
数据post到服务器后,服务器解析数据,这个过程需要耗费服务器时间,网页上控件越多,解析越慢。
------解决方案--------------------
我说说影响 
如果界面是大量的数据显示的页面最好不用
因为使用ViewState需要将所有的数据加载并加密到客户端 严重影响速度
如果是少量的信息提交页面 使用当然比较方便的..
------解决方案--------------------
探讨
1 ViewState实现机制。
将页面状态保持到一个加密的隐藏变量中,你可以将数据写入到viewstate中,然后通过浏览器打开的时候,查看源文件,里面一堆乱七八糟的代码,就是viewstate数据。
2 大量使用ViewState对程序的性能影响。
要理解对程序性能,需要清楚原理和执行过程
如果页面打开viewstate后,无论你是否在viewstate中写入数据,当页面提交的时候,都需要将页面控件中所有的数据值收集起来,post到服务器去。
收集…

------解决方案--------------------
虽然大家都知道ViewState是保存控件的值,但是实现机制是什么就必须要熟悉
asp.net的页面生命周期

页面生命周期第二大步骤(本步骤主要针对页面回滚)
加载视图:在初始化之后,页面框架立即加载该页面的视图状态(ViewState)。所谓视图状态就是一些名称/值对的集合,例如可以保存TextBox控件的ID和Text属性值。它一般被用于在一个往返行程中存留信息到服务器,即参与HTTP请求与响应。
页面视图状态被存储在<input type=”hidden”>字段中,做为_VIEWSTAE的值进行记录。该视图状态通过ASP.NE自动维护。通过重写LoadViewState方法组件,开发人员可控制如何还原视图状态以及如何将其内容影射到内部状态。LoadViewState方法就是从ViewState中获取上一次的状态,并按照页面的控件树的结构,用递归来遍历整个树,将对应的状态恢复到每一个控件上。

页面生命周期第八大步骤
保存状态SaveViewState:下一个状态为SaveViewState,在这一状态中所有控件以及页面本身可以刷新自己的SaveState集合的内容。所得到的视图状态随后得以序列化、进行哈希运算、进行Base64编码并关联到VI-EMSTATE隐藏自端。


------解决方案--------------------
ViewState的作用还是不错的
比如“下一步”...“下一步”...“下一步”
用这个就很方便了
------解决方案--------------------
推荐你看看这个:
http://topic.csdn.net/u/20080411/23/04ac58f3-cf6f-40fb-bc16-c51f44630a15.html