ポストバック間でオブジェクトの値を維持したいページがあります。モノの価値を維持する2つの方法を考えています
- View Sate に値を格納する
- 非表示フィールドに値を格納する
パフォーマンスに基づいて使用する最適なオプション
ポストバック間でオブジェクトの値を維持したいページがあります。モノの価値を維持する2つの方法を考えています
- View Sate に値を格納する
- 非表示フィールドに値を格納する
パフォーマンスに基づいて使用する最適なオプション
クライアント側スクリプトで参照する必要がない場合は Viewstate 。もしそうなら隠しフィールド。
また、データが機密性の高い場合、Viewstate はデフォルトで暗号化されますが、非表示フィールドはデフォルトで、ソースの表示方法を知っている人なら誰でも見ることができるプレーン テキストとして格納されることも考慮してください。
編集
@Andrew Hareの彼自身の回答に関するメモに従って、私はこれを編集しています。注意すべき重要な違いです。私の見落としに基づいてViewstateを使用して「安全」であると誰かが考えるのは嫌いです。
Viewstate はデフォルトでは暗号化されず、Base-64 エンコーディングとして保存されます。これはかなり簡単にデコードできるため、デフォルトで暗号化されているため Viewstate を使用することは無効です。プレーンテキストよりは優れていますが、「Viewstate の復号化」または「Viewstate のデコード」をグーグルで実行できる人には適していません。
そのため、Viewstate に依存して、クライアント側コードの非表示情報を保護しないでください。
ここの記事では、適切に暗号化する方法について説明しています。(ただし、パフォーマンスの問題についても警告します)。
ViewState 自体が非表示の入力に格納されているため、実際には問題になりません。どちらか使いやすい方を使用してください。ASP.NET ランタイムがオブジェクトのシリアル化と逆シリアル化を処理するため、私なら ViewState を選択します。
私は ViewState が好きです。ハッキングするのははるかに困難です。悪意のある人が、非表示フィールドに不正なデータを含むページを簡単に送信する可能性があります。
ビューステートに保存したい。非表示のフィールドは、クライアント側で操作できる情報を格納するためのものであるため、ブラウザーで更新できます。ビュー ステートは、改ざんに対して asp.net によって検証されます。隠しフィールドを自分で使用する必要があります。