1

我在 aspx 页面中使用 asp.net 和这段代码:

public partial class Default : System.Web.UI.Page
{
    string _Name;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            _Name = "Maikel";
            ViewState["Name"] = _Name;
        }
    }

    protected void btnAddName_Click(object sender, EventArgs e)
    {
        if (ViewState["Name"] == null)
        {
            txtName.Text = "Empty";
        }
        else
        {
            txtName.Text = ViewState["Name"].ToString();
        }
    }
}

没关系。并在文本框中显示“Maikel”。但是当我使用这段代码时:

<%@ Page Language="C#" AutoEventWireup="true" **ViewStateMode="Disabled" EnableViewState="true**" CodeBehind="Default.aspx.cs" Inherits="WebApplication3.Default" %>

ViewState["Name"]Empty!并在文本框中显示“ Empty”。为什么?

请帮助我ViewState使用ViewStateMode="Disabled" EnableViewState="true"

编辑:

我使用母版页和(使用母版页的网页),并在母版页中编写此代码:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" ViewStateMode="Disabled" EnableViewState="true" Inherits="WebApplication3.Site1" %>

和代码ViewState["Name"]后面的代码(使用母版页的网页),ViewState 不是空的!为什么?

4

2 回答 2

4

ViewStateMode="Disabled"在您的情况下,您通过在页面级别设置禁用了整个页面的 ViewState 属性。这就是为什么您在视图状态中没有得到任何东西的原因。

ASP.NET 视图状态概述

要默认禁用整个页面的视图状态,请将 @Page 指令的 ViewStateMode 属性设置为 Disabled。

Control.ViewStateMode 属性 (MSDN)

禁用页面的视图状态并为页面的特定控件启用它,请将页面和控件的 EnableViewState 属性设置为 true,将页面的 ViewStateMode 属性设置为 Disabled,并将控件的ViewStateMode 属性设置为启用。

仅当 EnableViewState 属性设置为 true 时,页面或控件的 ViewStateMode 属性才有效。如果 EnableViewState 属性设置为 false,即使 ViewStateMode 属性设置为 Enabled,视图状态也会关闭。

编辑: 在页面中使用 ViewState。

您可以将所有控件放在一个面板中,对于该面板,您可以将 ViewState 设置为 false。在页面级别启用ViewStateMode,您将能够在后面的代码中使用 ViewState

对于 MasterPage,您可以禁用 ViewStateContentPlaceHolder

<asp:ContentPlaceHolder ID="HeadContent" runat="server" EnableViewState="false">
</asp:ContentPlaceHolder>

并在母版页级别启用ViewStateMode

于 2013-01-10T09:25:16.500 回答
1

对于EnableViewState="True" ViewStateMode="Disabled" 页面将不会保持任何视图状态,即 ViewState["Name"]

如果您需要对其进行管理,则需要设置EnableViewState="True" ViewStateMode="Enabled"

于 2013-01-10T09:44:32.403 回答