将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
"。为什么?
请帮我把ViewState
和ViewStateMode="Disabled" EnableViewState="true"
一起使用。
编辑:
我使用母版页和(来自使用母版页面的网页(,并在母版页中写下以下代码:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" ViewStateMode="Disabled" EnableViewState="true" Inherits="WebApplication3.Site1" %>
以及代码隐藏页中的代码ViewState["Name"]
(来自使用母版页的web(,ViewState不为空!!为什么?
在您的情况下,通过在页面级别设置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"