[C#] ASP.NETのViewStateを無効にする
このページのタグ:[C#] [ASP.NET] [ViewState]
ASP.NETのViewStateを無効にする方法を紹介します。

手順

ページ全体のViewStateを無効にする場合

ページ全体のViewStateを無効にする場合は、PageディレクティブのEnableViewStateを"false"に設定します。

特定のコントロールのViewStateを無効にする場合

特定のコントロールのViewStateを無効にする場合は、コントロールのViewStateModeの値をDisabledに設定します。動作の詳細はこちらの記事も参照してください。

サンプルコード

UI



aspxファイルのコードは以下になります。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="ViewStateDisabled._default" EnableViewState="false" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <div><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></div>
      <div>
        <asp:Button ID="Button1" runat="server" Text="Button1" OnClick="Button1_Click" />
        <asp:Button ID="Button2" runat="server" Text="Button2" OnClick="Button2_Click" />
        <asp:Button ID="Button3" runat="server" Text="Button3" />
      </div>

      <div><asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></div>
    </div>
    </form>
</body>
</html>

コード

以下のコードを記述します。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace ViewStateDisabled
{
  public partial class _default : System.Web.UI.Page
  {
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void Button1_Click(object sender, EventArgs e)
    {
      Label1.Text = TextBox1.Text;
    }

    protected void Button2_Click(object sender, EventArgs e)
    {
      Label1.Text = "ペンギン";
      Label1.BackColor = System.Drawing.Color.PaleGreen;
    }
  }
}

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。


テキストボックスに"らくだ"を入力しました。


[Button1]をクリックします。ページ遷移し、ラベルに「らくだ」が表示されます。

補足:ViewStateが無効なのになぜラベルに「らくだ」が表示されるのか

Button1をクリックしてページ遷移する際に、テキストボックスの入力内容はポストによりサーバーに送信されます。(ポストバック)そのため、テキストボックスの内容はButton1のClickイベントハンドラ内で取得できるため、ラベルにテキストボックスの内容が反映されます。
[Button3]をクリックします。ページ遷移しますが、ページ遷移後ラベルの内容は"Label"に戻っています。


ページを再度読み込み直し、[Button2]をクリックします。ページ遷移し、ラベルに"ペンギン"が表示されます。また、背景色が緑になります。(この状態でページをリロードしても初期状態には戻りません。)


[Button3]をクリックします。ページ遷移します。ページ遷移後ラベルは初期状態の"label"に戻ります。

参考:ViewStateが有効な場合

Pageディレクティブの EnableViewState="false" を削除した場合の動作を確認します。

プロジェクトを実行します。下図のウィンドウが表示されます。


テキストボックスに"しろくま"を入力しました。


[Button1]をクリックします。ページ遷移し、ラベルに「しろくま」が表示されます。


[Button3]をクリックします。ページ遷移がありますが、ページ遷移後もラベルには「しろくま」が表示されたままです。


ページを読み込み直し[Button2]をクリックします。ラベルに「ペンギン」が表示され背景色が緑に変わります。


[Button3]をクリックします。ページ遷移がありますが、ページ遷移後もラベルの表示内容は変わりません。

プライバシー    iPentecについて
iPentec all rights reserverd. (ISDC)