Control.ViewStateMode 属性





0/5 (0投票)
视图状态 (View state) 是在页面提交到服务器时保存页面状态的地方。视图状态以隐藏控件的形式保存在表单中。视图
视图状态 (View state) 是在页面提交到服务器时保存页面状态的地方。视图状态以隐藏控件的形式保存在表单中。视图状态将每个页面控件的值存储为 Base64 编码的字符串。
我们可以在 <%@ Page %> 指令标签中添加 EnableViewState 来使页面不存储视图状态。
例如:<%@ Page Language="C#" EnableViewState="false" %>
EnableViewState 的默认值为“true”。
从 ASP.Net 4.0 开始,我们为服务器控件提供了一个新的属性 – ViewStateMode,它可以取值为“Enabled(启用)、Disabled(禁用)和 Inherit(继承)”。对于控件,ViewStateMode 的默认值为“Inherit”,对于页面,则为“Enabled”。
要仅为一个(或少数几个选定的)控件启用视图状态,请设置
<%@ Page Language="C#" EnableViewState="true" ViewStateMode="Disabled" %>
然后,仅为需要存储视图状态的选定控件设置 ViewStateMode="Enabled"。其余控件将具有默认值 ViewStateMode="Inherit",它们将从 <%@ Page %> 继承,因此将被禁用。
这将防止不必要的数据在回发时被保存为视图状态。
尝试此代码
Default.aspx
<%@ Page Language="C#" EnableViewState="true" ViewStateMode="Disabled"%>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
lblInherit.Text = "继承的标签,视图状态的值";
lblEnabled.Text = "启用的标签,视图状态的值";
}
}
</script>
<html>
<body>
<form id="form1" runat="server">
<!-- 回发后不会保留其值 -->
<asp:Label ID="lblInherit" runat="server" Text="继承的标签,将不存储视图状态"></asp:Label> <br />
<!-- -回发后将保留其值 -->
<asp:Label ID="lblEnabled" ViewStateMode="Enabled" runat="server" Text="此项将存储视图状态"></asp:Label> <br />
<asp:Button ID="btnPostback" runat="server" Text="回发" />
</form>
</body>
</html>