質問

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

なぜ一方を他方よりも選択するのですか?

ViewState

  • ユーザーがデコードするのは難しい(不可能ではないと考えた)が望ましい場合がある

HiddenField

  • JavaScriptで値を使用できます

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

役に立ちましたか?

解決

実際には、ViewStateは実際には非表示フィールドに格納されるため、実際の違いはエンコードのみです。

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

他のヒント

保守性の観点から、ViewStateを使用します。記述するコードが少なくなり、ソフトウェアの障害点が少なくなります。それはまた、あなたの後に来る開発者があなたのソリューションをより簡単にメンテナンスできることを意味します。

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

ViewStateはページ自体に保存されるため、ページサイズが大きくなり、パフォーマンスの問題

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

参加

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

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

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

string term = ((TextBox)Page.PreviousPage.FindControl("txtSearchTerm")).Text;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top