7

保存する単純なデータ (整数や文字列など) がある場合は、それを ViewState に保存するか、HiddenField コントロールを使用することを選択できます。

なぜ私は他のものよりも1つを選ぶのでしょうか?

ビューステート

  • ユーザーがデコードするのが難しい (不可能ではないと考えられていた)、これは望ましいことかもしれません

隠しフィールド

  • 値は JavaScript で使用できます

他の長所と短所はありますか?

4

5 に答える 5

6

そうではありませんが、ViewState は実際には隠しフィールドに格納されているため、唯一の違いはエンコーディングです。

JavaScript で値を操作する必要がある場合や、このページで ViewState を完全にオフにしたい場合を除き、ViewState を使用します。ほとんどの場合、ViewState を理解し、カスタム非表示フィールドを理解しないサードパーティ ツール (このような) があるためです。

于 2009-01-08T13:27:59.810 に答える
3

保守性の観点から、私はViewStateを使用します。作成するコードが少なくなるため、ソフトウェアの障害点が少なくなります。また、あなたの後に来る開発者は、ソリューションを維持するのが簡単になることも意味します。

これに完全に慣れていない場合は、ViewStateから値を取得するためのファサードとして機能するプロパティアクセサーをページに記述します。後で、それを非表示フィールドに変換する必要があると感じた場合、アクセサーはコードの残りの部分でそのスイッチを無意識に処理できます。そうする理由を必ず文書化してください。

于 2009-01-08T13:56:25.290 に答える
1

Viewstate は、現在表示中のページ、または投稿したページでのみ有効です。隠しフィールドを使用すると、次のように Page オブジェクトの PreviousPage メソッドを使用して、移動先の次のページのデータ (およびその他のデータ) にアクセスできます。

string term = ((TextBox)Page.PreviousPage.FindControl("txtSearchTerm")).Text;
于 2011-01-17T20:39:27.927 に答える
0

ViewStateはページ自体に格納されるため、ページサイズが大きくなり、パフォーマンスの問題が発生する可能性があります。

また、一部のセキュリティ問題から保護する可能性のあるページ自体ではなくサーバーにビューステートを保存するようにアプリケーションを構成できます。

ジョミット

于 2009-01-08T13:41:45.007 に答える
0

隠しフィールドはページ上では非表示であり、それらの値はビュー ソースで表示できますが、ビュー ステートの値はエンコードされており、読み取ることができません。

非表示フィールドの値は次のページに掲載されています。(注: 非表示フィールドの値を取得するには、server.transfer を使用します)。

于 2012-05-02T06:46:46.863 に答える