2011-01-28 6 views
5

フォームを送信するたびに、すべてのフィールド値がサーバーに送信され、Requestオブジェクト内で使用できます。理想的には、同じオブジェクトを使用して値を読み取り、その値で操作を実行できます。Requestオブジェクトにすべてのフィールド値が含まれる場合、ViewStateはなぜ必要ですか?

次に、フィールドの値を保持するためにViewStateが必要なのはなぜですか?

私の無知を容赦してください、私はいつかここでかなり明白なことを逃していると思いますが、何が分かりませんか。

答えて

2

V4Vendettaあたりとして、あなたはあなたのコントロール上のViewStateを無効にすることができますが、あなたは、例えば、手動で「ASPクラシックスタイル」を開発する必要があるだろうページにユーザーを残す必要があり、フォームが検証に失敗した場合は、ユーザーが最後に設定した値に初期値を戻す必要があります。そうしないとユーザーデータが失われます。

ASP Netコントロールは、この情報をViewStateに保持することにより、やや上品に処理します。ただし、コントロールを再度レンダリングする必要がない場合や、以前の状態(ページングされたグリッドなど)を必要とせずに毎回新しいコントロールデータをレンダリングする場合は、コントロールのViewStateを無効にすると帯域幅が節約されます。

ViewStateの良い説明here

+0

View Stateの別の良い記事http://aspnetresources.com/articles/ViewState –

1

Viewstateは、サーバーへのラウンドトリップの間に現在のページ状態を維持するために導入されたASP.NET状態管理手法です。 この機能を使用したくない場合は、この機能を無効にすることができます。これは純粋にページの実装方法に基づいています。

<%@ Page EnableViewState=”false”%> 
+0

しかし、なぜ私は最初に導入されたのか理解しようとしています。 ViewStateの使用が必須である特別なケースはありますか? –

+0

ポストバックの状態を維持して値を保持するには、ページの読み込み時に常に値を設定する必要があります – V4Vendetta

4

ViewStateがASP.Netに導入された最も明白な理由は、(イベントに基づいて)Winformライクなプログラミングモデルを可能にするためでした。

あなたは、サーバー側のコントロール(たとえばテキストボックス)を持っている場合は、ブラウザに送信されたHTMLページが含まれています

  • ビューステート=>この値で符号化されたコントロールの初期値は、ブラウザ/ユーザ
  • 制御自体によって修正することができません=>ブラウザ/ユーザーがフォームがサーバーに戻って送信され、その状態

を変更することができ、ASP.Net、基礎となるエンジンは比較します格納されていた初期値での制御の新しい値ViewStateで同じでない場合は、OnChangeイベントがトリガされ、winformアプリケーションと同様にイベントにアタッチできます。

+0

他のイベントはどうなりますかマウスのクリック/移動のようなボタンのクリック? asp.netフレームワークがそれらのイベントを検出する方法を教えてください。 –

関連する問題