Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
こんにちは。
9月10日・11日に開催される「OSC 2010 Tokyo」開催記念として、某レンタルサーバーにて利用できる Web プラットフォーム インストーラー について紹介しようと思ったのですが、会社の IP から接続拒否されてしまいました。。。という事で標題の内容をお届けします。
今までの ViewState 設定方法
今までは無効にしたいサーバーコントロールの EnableViewState プロパティ(*) を無効に設定する必要がありました。基本的に はViewState を無効にしたいサーバーコントロールが多いので、各サーバーコントロールに対して無効の設定をしていくのはかなり面倒でした。
(*) EnableViewState: 「True」ViewState を有効にする。「False」ViewState を無効にする。デフォルトは「True」
ASP.NET 4での ViewState 設定方法
ASP.NET 4 では、ViewStateMode プロパティ(**)が追加されました。ViewStateMode プロパティが用意された事で ViewState が必要なサーバーコントロールだけを設定する事ができるようになりました。
(**) ViewStateMode: 「Enabled」ViewState 有効。「Disabled」ViewState 無効。「Inherit 」親のプロパティ値を継承。デフォルトは「Inherit 」
Page クラスの ViewState を設定する
ASP.NET 4 では ViewStateMode プロパティが追加されましたが、何も設定しないと今までと同じで ViewState は有効になっています。 それは、サーバーコントロールの親である Page クラスとサーバーコントロールの ViewStateMode プロパティのデフォルト値に原因があります。
・Page クラスの ViewStateMode プロパティのデフォルト値: 「Enabled」
・サーバーコントロールの ViewStateMode プロパティのデフォルト値: 「Inherit」
親の Page クラスの ViewState の設定が有効となっているため、自動的に子のサーバーコントロールのViewState も有効となっていました。
そこで、
<%@ Page ViewStateMode="Disabled" %>
と記述することで、そのページに配置している全てのサーバーコントロールのViewState を無効にすることができます。あとはViewState を有効にしたいサーバーコントロールのViewStateMode プロパティ値を「Enabled」とするだけです。
ViewState の生成条件にご注意ください。
ViewState はポストバック処理とセットで必要な機能ですので、ポストバック処理がないページには ViewState は生成されません。Form コントロールがページ内に配置されるとViewStateが生成されるようになります。
従って、Form コントロールの外に配置されたサーバーコントロールに ViewState の設定をしてもそれは意味がありませんので、ご注意ください。
いかがでしたでしょうか? ViewState の設定もポイントを押さえておけば簡単に行うことができます。
武田正樹
(おまけ)あまりお勧めしませんが、ViewState をもっと設定する。
Page クラスには、 EnableViewStateMac なるプロパティも存在します。このプロパティは、ViewState が改ざんされていないかをチェックするViewState MAC ( Mesasage Authentication Check) 機能についての設定になります。
EnableViewStateMac プロパティ値はもちろんデフォルトで「True」となっていますが、「False」と設定することで、ViewStateMACを無効にできます。これによって生成される ViewState の文字列を短くすることができますが、劇的に短縮するわけではないので、お勧めはしません。