首先要明白的是,当你按了类似Button按钮,将页面重新发给服务器后,服务器处理你的页面的过程是:它会重新初始化你第一次请求的那个页面,就是说尽管你第一次请求页面后对这个页面做了许多其他的操作,比如说该页面有让用户随意转换文章字体的功能,你按了个标签使文章字体改变了,之后又有操作按了Button按钮将页面回发给服务器,让它处理你的Button事件,此时服务器重新初始化你的那个页面,该页面只是你第一次请求时的状态(即未改变文章字体的状态),但是为何服务器处理了你的Button事件,将网页回发给你后,文章的字体的确还是你之前自定义的字体呢?不是初始化页面的时候只是回到你第一次请求的状态吗?这就是viewstate的功能。在服务器初始化页面后,它会读取隐藏在你回发的页面中的viewstate,从中读取相应信息,在服务器端将文章字体变为你当初自定义的字体。 你的例子中,当在TextBox中输入文字后,传给服务器,服务器当然还能获得你的输入,唯一不同的是,如果你禁用了视图状态,那么当页面再次发给你的时候,你的TextBox就是空的了。而若没有禁用,当页面再次回发给你的时候,TextBox中仍然保留你上次的输入值。
如果服务器控件维护自己的视图状态,则为 true;否则为 false。默认值为 true。
必须启用服务器控件的视图状态,才能在 HTTP 请求之间维护其状态。
如果不必存储单个控件的控件信息,则可以禁用控件的视图状态。如果页上的某个控件在每次回发时从数据存储区进行刷新,则可以关闭该控件的视图状态以减少视图状态的大小。
ViewState这个属性是保存页面的一个状态,比方说你原先文本框里面输入几个字符提交到服务器上去,如果这个时候ViewState被禁用了也就是说this.EnableViewState=false,页面刷新完文本框里的值就被清空了,如果没有禁用的话this.EnableViewState=true的话文本框里的值还在。
EnableViewState 就是说此控件可以保持状态,在页面回传的时候,能够保留页面输入的信息