65.9K
CodeProject 正在变化。 阅读更多。
Home

Control.ViewStateMode 属性

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2013 年 10 月 11 日

CPOL

1分钟阅读

viewsIcon

15671

视图状态 (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>

© . All rights reserved.