先简单说一下Viewstate的运行机制:
ViewState就是用来存储数据的,就像HashTable一样通过键值对进行数据存取。ViewState通过String类型的数据作为Key,ViewState对应项中的值可以存储任何类型的值,实施上任何类型的值存储到ViewState中都会被装箱为Object类型。ViewState定义在System.Web.UI.Control类中的一个保护类型(Protected)的属性名称。所有服务器端的控件,包括用户自定义控件还有页面(Page)类都是继承自System.Web.UI.Control类,所以这些控件都具有这些属性。事实上许多服务器端控件大多数属性值都是利用ViewState来进行数据存储。
通过Reflector查看TextBox.Text属性的源代码你可以看到类似如下的代码:
public string Text {
get ...{ return (string)ViewState["Text"]; }
set ...{ ViewState["Text"] = value; }
}