首页 优化推广 ASP.net View State

ASP.net View State

来源: | 时间:2013/1/5 22:21:14 |

什么是ViewState?
对于ViewState,我们有许多的误解。Viewstate不保存控件,而是去保存form中对应ID控件的值,特别是那些由于他们没有和form一起post 而在页面回传时会丢失的控件的值。viewstate一般不要用来保存session或在页面间传输数据。在页面回传后,viewstate不能用来动态地创建页面的控件。他在页面回传之后不回复控件的值。甚至一个控件的viewstate被禁止了,在页面回传后,控件的值仍然不会丢失,比如textbox,dropdownlist控件。那什么是viewstate呢?viewstate保存最后一次在服务器上处理的页面状态。他不能保存那些被动态改变的控件的值。

viewstate是如何工作的?
所有的服务器端控件都有一个ViewState属性。如果他是enable的,这个控件的viewstate就起作用了。那viewstate是在哪里,是如何存储的呢?当一个页面第一次加载,所有的控件被序列化到viewstate,保存在一个叫_ViewState的隐藏form字段里。这个隐藏字段对应服务器端的ViewState对象。页面的ViewState使用System.Web.UI.StateBag对象存储键值对。当一个回传发生,页面反序列化ViewState然后恢复所有的控件。页面中保存控件的ViewState以base 64 编码格式存储成name - value。当一个页面重新加载,会调用两个和ViewState相关的方法, LoadViewState 和SaveViewState。下面是我的一个页面中的_ViewState隐藏字段。

<input type="hidden" name="__VIEWSTATE" value="dNrATo45Tm5QzQ7Oz8AblWpxPjE9MMl0Aq765QnCmP2TQ==" />

启用和禁止ViewState
在默认情况下,所有服务器控件的viewstate开启状态,通过以及几种途径来禁止。
1.页面级别
2.控件级别
3.应用程序级别
4.机器级别
页面级别禁止的方法是在页面的开始写入

<%Page EnableViewState ="False" %> 
or 
<%Page EnableViewState ="True" %>

控件级别是

<asp:TextBox id="txtCode" runat="server” EnableViewState="false" />
or
<asp:TextBox id="txtCode" runat="server" EnableViewState="true" />

程序级别是在web.config中

服务热线

153 8323 9821

功能和特性

价格和优惠

网站和维护

推广和优化

微信服务号