ViewState可实现的功能:
- 以名值对的形式来存储控件的值,和hashtable的结构类似。
- 跟踪那些ViewState中出现改变的值,以便对这些脏数据(dirty)进行进一步的处理。
- 通过序列号将ViewState中的值保存在页面的隐藏域(hidden field)中(此为默认的持久化方式),通过反序列化得到对应的ViewState对象以便进行相应的操作。
- 在页面回传的过程中自动地存储ViewState中跟踪的值。
ViewState不可用于实现的功能
- 自动保存一个类中变量的状态,无论是public还是private或者protected都不可以。
- 不能在界面回传的过程中记住所有的值
- 只要存在ViewState,那么每次页面请求时重新构造的数据操作是不必要的。
- ViewState不存储那些通过post名值对回传来的数据值。
ViewState作为一个整体出现在.NetFrameWork框架中有的它的唯一目的:
在页面回传过程中,保存状态值。
ViewState是用来存储数据的
ViewState通过string类型的数据作为索引。(ViewState不允许通过整型下表的方式对其中的项进行访问。)
ViewState对应项中的值可以存储成任何类型的。因为实际上任何类型的数据存储到ViewState中都被装箱成object类型。
大多数服务器控件存储其属性值的存储方式是通过ViewState方式来存储,而非通过私有类的字段来存储。
在viewstate中,只要调用了trackViewstate()方法,如果其后出现赋值操作,那么数据就会被标记为脏数据。
Asp.net是在页面生命周期的Oninit阶段才开始调用trackViewstate()f方法的。
浙公网安备 33010602011771号