我在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不是空的!!为什么呢?
答案 0 :(得分:4)
在您的情况下,您通过在页面级别设置ViewStateMode="Disabled"
来禁用整个页面的ViewState属性。这就是为什么你没有得到视图状态的任何东西。
要默认为整个页面禁用视图状态,请设置 @ 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
<asp:ContentPlaceHolder ID="HeadContent" runat="server" EnableViewState="false">
</asp:ContentPlaceHolder>
并在主页面级别启用ViewStateMode
答案 1 :(得分:1)
EnableViewState="True" ViewStateMode="Disabled"
页面不会保留任何视图状态,即ViewState["Name"]
如果您需要进行管理,则需要设置EnableViewState="True" ViewStateMode="Enabled"