ViewState 在控件开发中经常会用到。
ViewState 的作用:
1. 类似HashTable,通过Key值为每个控件存储各种信息。
2. 初始化值之后, 跟踪ViewState 值的变化。
3. 提供序列化,发序列化功能,将ViewState 的值放置到客户端form的隐藏域。
4. 在PostBack时,自动恢复ViewState 值。
ViewState不能做的事情:
1. 自动保留类变量的状态。
2. 记住每次页面载入的状态信息。
ViewState是定义在 System.Web.UI.Control 类的一个保护属性(protected ),所有的服务器端控件, 用户控件, 和page都是从这个类派生下来的。 而这个属性的实际类型是System.Web.UI.StateBag。
服务器端控件利用ViewState作为即使不是全部,也是大部分的属性的后端存储器。
通常我们存储属性值的方式如下:
public string Text { get { return _text; } set { _text = value; } }
但在asp.net的控件中,通常都不是这样的。对应的代码应该是下面的样子:
public string Text { get { return (string)ViewState["Text"]; } set { ViewState["Text"] = value; } }