ViewStateまたはHiddenField
-
05-07-2019 - |
質問
保存する単純なデータ(整数や文字列など)がある場合、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;