ViewState

ViewState是ASP.NET服务器控件非常重要的一个属性。

ViewState用来保存和传递ASP.NET控件状态(值),反映到HTML。ViewState是通过隐藏输入框(HiddenField)来工作的。

例:

HTML <asp:Button ID="btnAdd" runat="server" Text="Add" OnClick="btnAdd_Click" /><br />
    
<asp:Label ID="lblAcounter" runat="server" Text="0"></asp:Label>
C#      protected void btnAdd_ClickTest(object sender, EventArgs e)
        {
            lblAcounter.Text 
= (Int32.Parse(lblAcounter.Text) + 1).ToString();
        }

点击Button,ASP.NET把控件的状态序列化成一个字符串,通过ViewState回传到服务器,处理后再返回到浏览器。如此,此例中Label的值不断加1。禁掉ViewState后,Label的值将不能回传到服务器,Label将一直为1,不能递增。

1. 可以在<%@ Page %>中加入Trace="True" 来监视ViewState。

2. 也可以在Web.config或者页面或者控件中设置EnableViewState="false",来禁掉ViewState。

可以用ViewState来在前台页面读取后台的值,进行前后台传值。可以在后台对ViewState进行读写,如:this["strTest"] = "Test String"; 或者string test=this["strTest"]; 在前台页面,只能读取ViewState,不能写:var test="<% =this["strTest"] %>";

ViesState不能跨页面。

ASP.NET 2.0 提供了一个新的特性 Control State,Control State和ViewState类似,Control State只保存主要的状态信息。禁掉ViewState时不会同时禁掉Control State,不过Control State默认是关闭的。Control State的一个重要应用是 GridView Control使用Control Satate保存所选的Row

原文地址:https://www.cnblogs.com/niuniu1985/p/1974439.html