将ViewState与ViewStateMode一起使用=“;被禁用”;EnableViewState=“;真”;

本文关键字:ViewState EnableViewState 一起 ViewStateMode | 更新日期: 2023-09-27 17:51:08

我在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();
        }
    }
}

OK。并在文本框中显示"Maikel"。但是当我使用这个代码时:

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

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

请帮我把ViewStateViewStateMode="Disabled" EnableViewState="true"一起使用。

编辑:

我使用母版页和(来自使用母版页面的网页(,并在母版页中写下以下代码:

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

以及代码隐藏页中的代码ViewState["Name"](来自使用母版页的web(,ViewState不为空!!为什么?

将ViewState与ViewStateMode一起使用=“;被禁用”;EnableViewState=“;真”;

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

ASP.NET视图状态概述

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

Control.ViewStateMode属性(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

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

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