保存する単純なデータ (整数や文字列など) がある場合は、それを ViewState に保存するか、HiddenField コントロールを使用することを選択できます。
なぜ私は他のものよりも1つを選ぶのでしょうか?
ビューステート
- ユーザーがデコードするのが難しい (不可能ではないと考えられていた)、これは望ましいことかもしれません
隠しフィールド
- 値は JavaScript で使用できます
他の長所と短所はありますか?
保存する単純なデータ (整数や文字列など) がある場合は、それを ViewState に保存するか、HiddenField コントロールを使用することを選択できます。
なぜ私は他のものよりも1つを選ぶのでしょうか?
ビューステート
隠しフィールド
他の長所と短所はありますか?
そうではありませんが、ViewState は実際には隠しフィールドに格納されているため、唯一の違いはエンコーディングです。
JavaScript で値を操作する必要がある場合や、このページで ViewState を完全にオフにしたい場合を除き、ViewState を使用します。ほとんどの場合、ViewState を理解し、カスタム非表示フィールドを理解しないサードパーティ ツール (このような) があるためです。
保守性の観点から、私はViewStateを使用します。作成するコードが少なくなるため、ソフトウェアの障害点が少なくなります。また、あなたの後に来る開発者は、ソリューションを維持するのが簡単になることも意味します。
これに完全に慣れていない場合は、ViewStateから値を取得するためのファサードとして機能するプロパティアクセサーをページに記述します。後で、それを非表示フィールドに変換する必要があると感じた場合、アクセサーはコードの残りの部分でそのスイッチを無意識に処理できます。そうする理由を必ず文書化してください。
Viewstate は、現在表示中のページ、または投稿したページでのみ有効です。隠しフィールドを使用すると、次のように Page オブジェクトの PreviousPage メソッドを使用して、移動先の次のページのデータ (およびその他のデータ) にアクセスできます。
string term = ((TextBox)Page.PreviousPage.FindControl("txtSearchTerm")).Text;
ViewStateはページ自体に格納されるため、ページサイズが大きくなり、パフォーマンスの問題が発生する可能性があります。
また、一部のセキュリティ問題から保護する可能性のあるページ自体ではなくサーバーにビューステートを保存するようにアプリケーションを構成できます。
ジョミット
隠しフィールドはページ上では非表示であり、それらの値はビュー ソースで表示できますが、ビュー ステートの値はエンコードされており、読み取ることができません。
非表示フィールドの値は次のページに掲載されています。(注: 非表示フィールドの値を取得するには、server.transfer を使用します)。