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のメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2024-01-06
作成日: 2014-03-28