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"

編集:

私はマスターページと (使用マスターページからの web) を使用し、マスターページに次のコードを記述します。

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

コードViewState["Name"]ビハインドページ(使用マスターページからのWeb)のコード、ViewStateは空ではありません!! なぜ?

4

2 に答える 2

4

あなたの場合ViewStateMode="Disabled"、ページレベルで設定することにより、ページ全体のViewStateプロパティを無効にしました。これが、ビューステートで何も取得されない理由です。

ASP.NETビューステートの概要

ページ全体のビューステートをデフォルトで無効にするには、@PageディレクティブのViewStateMode属性をDisabledに設定します。

Control.ViewStateModeプロパティ (MSDN)

ページのビューステートを無効にし、ページ上の特定のコントロールに対して有効にするには、ページのEnableViewStateプロパティとコントロールをtrueに設定し、ページのViewStateModeプロパティをDisabledに設定し、コントロールのViewStateModeプロパティを設定します。有効に。

ページまたはコントロールのViewStateModeプロパティは、EnableViewStateプロパティがtrueに設定されている場合にのみ効果があります。EnableViewStateプロパティがfalseに設定されている場合、ViewStateModeプロパティがEnabledに設定されていても、ビューステートはオフになります。

編集: ページでViewStateを使用するには。

すべてのコントロールをパネル内に配置でき、そのパネルのViewStateをfalseに設定できます。ページレベルで有効ViewStateModeにすると、コードビハインドでViewStateを使用できるようになります

MasterPageの場合、ViewStateを無効にすることができますContentPlaceHolder

<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 に答える