SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ASP.NET 4 Beta入門

サーバーサイドの開発改善に注目!
~VS2010+ASP.NET 4新機能(後編)~

ASP.NET 4 Beta入門(2)


ViewStateModeプロパティ

 ASP.NETではViewStateを利用することでステートレスなWebページの情報を保持できます。しかし、ViewStateは仕組み上、HTMLソース内にhidden属性の値を大量に埋め込みます。ページに多くのコントロールが使用されていればいるほど、ViewStateは多く生成され、アプリケーションのパフォーマンスを大きな影響を与えます。

 ASP.NET 4で追加されたViewStateModeプロパティは、ページ全体(ページディレクティブ)に適用、入れ子元のコントロール、そして個々のコントロールと範囲指定でViewState利用の可否に関する設定を可能にするプロパティです(図3~4)。

図3 ViewStateModeプロパティ活用フォーム1
図3 ViewStateModeプロパティ活用フォーム1
図4 ViewStateModeプロパティ活用フォーム2
図4 ViewStateModeプロパティ活用フォーム2

 値はViewStateMode列挙体から選択します。

ViewStateModeプロパティの値
概要
Inherit 入れ子元のViewStateModeの値を継承(サーバーコントロールの既定値)
Enabled 入れ子元のViewStateModeの値が無効でも有効に切り替える(ページディレクティブ内の属性の既定値)
Disabled 入れ子元のViewStateModeの値が有効でも無効に切り替える

 それではViewStateModeプロパティの記述を紹介します。まずはサーバーコントロールの記述方法です。

ViewStateModeの指定例(ViewStateMode.aspxの一部)
<h2><asp:Label ID="Label1" runat="server" Text="ViewState生成しません" ViewStateMode="Disabled"></asp:Label></h2>
<br />
<h2><asp:Label ID="Label2" runat="server" Text="ViewState生成します"></asp:Label></h2>
<br />
<asp:Button ID="Button1" runat="server" Text="ポストバック"/>

 ラベルコントロールを2つ配置し、ViewStateModeをDisabledに設定しています。ボタンコントロールはポストバックを行うためだけに配置しています。続いてサーバーサイドの記述です。

ViewStateMode.aspx.csの一部
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        Label1.Text = "ViewStateMode = Disabled設定のラベル";
        Label2.Text = "ViewStateMode = Enable設定のラベル";
    }
}

 !IsPostBackにより、初回実行時に各テキストを表示させています。これらの設定完了後に実行することで、初回に設定された値をポストバックした際にViewStateで値を保持するか、ラベルコントロールが本来持つテキストが表示されるか判別できます。実行結果は図3~4の通りです。

 ViewStateModeには注意点が1つあります。それはEnableViewStateプロパティです。ViewStateModeプロパティは、EnableViewStateプロパティがTrueの時のみ効果を発揮します。つまり、ページ ディレクティブで、EnableViewStateプロパティをFalseに設定している場合は、そのページでViewStateModeプロパティは効果を発揮しません。

 最初にも書いたようにViewStateはアプリケーションのパフォーマンスに大きな影響を与えます。範囲指定によるViewStateの利用設定が可能になるので、開発生産性のアップとユーザービリティの向上に繋がるでしょう。

次のページ
Web FormにおけるURLルーティング

この記事は参考になりましたか?

ASP.NET 4 Beta入門連載記事一覧
この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト ナオキ(ナオキ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4853 2010/02/19 11:52

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー