EnableViewState
简述ViewState的作用,没有ViewState的时候表单会出现什么情况。
保持当前页面的一些控件的状态和值,eg:TextBox的值,Label的值,即使它们是visible=false;如果没有EnableViewState这个属性,这些控件就可能取不到值。
1、EnableViewState="true"
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test.aspx.cs" Inherits="CanYou.NewsSys.Web.Test" EnableViewState="true" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>EnableViewState</title>
</head>
<body>
<form id="form1" runat="server">
<select name="ListBox1" size="4" id="ListBox1" runat="Server" style="width: 152px; z-index: 102; left: 176px; position: absolute; top: 120px">
</select>
<asp:Button runat="server" ID="btnEnableViewState" OnClick="btnEnableViewState_Click"
Text="EnableViewState" />
</form>
</body>
</html>
此时运行该应用程序,单击网页上的按钮btnEnableViewState,在ListBox中会添加内容,不断地单击,内容则不断添加;每点击一次,Value值就增加一个值,长度不断变长(1+2..+n+..)。下面是Aspx页面的html源码:
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1"><link href="App_Themes/MainStyle/common.css" type="text/css" rel="stylesheet" /><link href="App_Themes/MainStyle/Controls.css" type="text/css" rel="stylesheet" /><link href="App_Themes/MainStyle/Default.css" type="text/css" rel="stylesheet" /><link href="App_Themes/MainStyle/MainFrame.css" type="text/css" rel="stylesheet" /><link href="App_Themes/MainStyle/StyleSheet.css" type="text/css" rel="stylesheet" /><title>
EnableViewState
</title></head>
<body>
<form name="form1" method="post" action="Test.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTYyMTk0MjI4OA9kFgICAw9kFgICAQ8QZA8WA2YCAQICFgMQBR7lrqLmiLfnq6/ngrnlh7vmjInpkq7
kuIDmrKHvvIEFHuWuouaIt
+err+eCueWHu+aMiemSruS4gOasoe+8gWcQBR7lrqLmiLfnq6/ngrnlh7vmjInpkq7kuIDmrKHvvIEFHuWuouaIt
+err+eCueWHu+aMiemSruS4gOasoe+8gWcQBR7lrqLmiLfnq6/ngrnlh7vmjInpkq7kuIDmrKHvvIEFHuWuouaIt
+err+eCueWHu+aMiemSruS4gOasoe+8gWdkZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAQUIT
GlzdEJveDG8AlywMNsh3eflPAEr8Sqv6t+Tkw==" />
</div>
<select name="ListBox1" id="ListBox1" size="4" style=" 152px; z-index: 102; left: 176px; position: absolute; top: 120px">
<option value="客户端点击按钮一次!">客户端点击按钮一次!</option>
<option value="客户端点击按钮一次!">客户端点击按钮一次!</option>
<option value="客户端点击按钮一次!">客户端点击按钮一次!</option>
</select>
<input type="submit" name="btnEnableViewState" value="EnableViewState" id="btnEnableViewState" />
</form>
</body>
</html>
2、EnableViewState="false"
不断单击按钮,则只能添加一次。
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTYyMTk0MjI4OGQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFCExpc3RCb3gxCSwMb6JC0NQ1qKDrgEO6T4KcMMo=" />
</div>
一旦页面的控件很多,这种频繁的传递控件状态值对网络的消耗是很大的,因此,ASP.Net提供了EnableViewState属性,系统默认的值为true。当设置为true时,在传递状态值时就包括该控件;如果设置为false,则传递状态值时则不包括它。既然状态值不包括该控件,则客户端对它进行的操作,服务器端是不响应的(value值就不会对这个控件传递状态值)。
这样有什么好处呢?如果我们在开发Web应用程序时,某些控件是不需要接受用户的操作或只需要接受一次操作的时候,我们可以将这些控件的EnableViewState属性改为false,这样可以优化我们的程序,提高网络访问的速度。
EnableViewState="false"
点击三次button按钮:
value="/wEPDwUKLTYyMTk0MjI4OGQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFCExpc3RCb3gxCSwMb6JC0NQ1qKDrgEO6T4KcMMo=" />
---------------------------------------------------------------------------------------------------------------------
EnableViewState=" true "
点击三次button按钮:
value="/wEPDwUKLTYyMTk0MjI4OA9kFgICAw9kFgICAQ8QZA8WA2YCAQICFgMQBR7lrqLmiLfnq6/ngrnlh7vmjInpkq7kuIDmrKHvvIEFHuWuouaIt
+err+eCueWHu+aMiemSruS4gOasoe+8gWcQBR7lrqLmiLfnq6/ngrnlh7vmjInpkq7kuIDmrKHvvIEFHuWuouaIt
+err+eCueWHu+aMiemSruS4gOasoe+8gWcQBR7lrqLmiLfnq6/ngrnlh7vmjInpkq7kuIDmrKHvvIEFHuWuouaIt
+err+eCueWHu+aMiemSruS4gOasoe+8gWdkZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAQUITGlzdEJveDG8AlywMNsh3eflPAEr8Sqv6t+Tkw==" />
---------------------------------------------------------------------------------------------------------------------
EnableViewState设置为false,则传递状态值时则不包括它(以前的状态和值)