2011-09-12 11 views
0

Viewステートの使用を理解しています。ビューステートについて語るあらゆる資料は、ビューステートの必要性と使用方法を説明します。しかし、コントロールレベル/ページレベルごとにオプションを用意して無効にすることもできます。Viewstateを無効にする必要がある

どのような状況で、ページやコントロールのビューステートを無効にしたいのですか?

オンライン材料から、私は、ページが任意の動的なデータを持っていない場合は

は、データは、我々はビューステートを無効にすることができラウンドトリップの間 を永続化する、ことをお読みください。

私はこの声明に同意しますが、これを行う利点は何ですか?私たちはそれから何を得るのですか?

答えて

4

一部のページには巨大なビューステートがあります。そのため、サーバーへの負荷やネットワークトラフィックなど、前後に送信するには時間がかかります。多くの時間を必要としないため、ビューステートを縮小することでアプリケーションの処理速度が向上します。

viewstateを完全に無効にしても、制御要件のために必要なビューステートはまだ小さくなりますが、大幅に削減することができます。私はviewstatesがページあたり200kbに​​入るのを見た。

1

ページがViewStateをクライアントにレンダリングする必要があるため、ViewStateが無効になっている場合は、読み込み時間を短縮できます。

.Netが導入された頃、私はゆっくりと読み込んでいたページを撮影することを覚えていました。そのページは、ViewStateに保存された大きなグリッドをレンダリングしていました。 ViewStateからデータを削除することは大きな違いをもたらしました。

2
  1. ViewStateの隠し値が ""に設定されているため、ペイロードが少なくなります。数千ものレコードを表示するデータグリッドでは、ViewStateのサイズは数MBになる可能性があります。
  2. ViewStateがもう転送されないだけでなく、ViewStateの読み込みは一般に高価です。値。

実際、ViewStateの暗号化を無効にするだけでパフォーマンスを向上させることはできますが、これはセキュリティ上の安全上の理由ではありません。

1

ViewStateは、Webページの非表示の入力フィールドとしてレンダリングされます。これにより、ViewStateを他のすべてと一緒に投稿する必要があるため、ページの読み込みが遅くなり、ポストバックが遅くなります。

したがって、ViewStateを無効にすると、ページのパフォーマンスが向上します。どれくらい早い?言いにくい。

通常、ViewStateが必要ない場合は無効にします。

ViewStateを無効にしても、.NETに必要な少量のデータで非表示のコントロールが引き続き存在することにも注意してください。

1

asp:Labelまたはasp:Literalコントロールとしてユーザーに情報またはエラーメッセージを表示すると、ほぼ常に特定のポストバックにのみ適用されるため、ほとんど常にEnableViewStateをfalseに設定します。EnableViewStateをfalseに設定すると、コードビハインドでこれを記述する必要はありません。

lblSomethingWentWrong.Text = string.Empty;