使用ViewState与ViewStateMode =“已禁用”EnableViewState =“true”

时间:2013-01-10 09:16:37

标签: c# asp.net viewstate

我在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不是空的!!为什么呢?

2 个答案:

答案 0 :(得分:4)

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

ASP.NET View State Overview

  

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

Control.ViewStateMode Property (MSDN)

  

停用网页的视图状态,要为特定网站启用它   控制在页面上,设置页面的EnableViewState属性   并将控件设置为true,将页面的ViewStateMode属性设置为   禁用,并将控件的 ViewStateMode属性设置为   启用。

     

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

修改 在页面中使用ViewState。

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

对于MasterPage,您可以在ContentPlaceHolder

上禁用ViewState
<asp:ContentPlaceHolder ID="HeadContent" runat="server" EnableViewState="false">
</asp:ContentPlaceHolder>

并在主页面级别启用ViewStateMode

答案 1 :(得分:1)

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

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