8

ViewState はどこに保存されますか? サーバー側またはクライアント側に保存されますか?

いくつかのプロセスのために保存する必要がある巨大なデータがあります。セッションを使用していました。しかし、あるページから別のページに移動すると、セッションをクリアできません。そこで、ViewState を実装することを考えました。しかし、大量のデータで実行するとViewStateがエラーをスローしますか?

どうすればこれを解決できますか?

4

5 に答える 5

11

ビューステートは、エンコードされた形式でページ自体に保存されます。クライアント側でビューステートに直接アクセスすることはできません。クライアント側のコードでこのビューステートから貴重なデータを取得するには、エンコード/デコード アルゴリズムを知る必要があります。

隠し変数を使用して、そのページでのみ使用されるデータを格納できます。非表示の変数は、クライアント側とサーバー側のコードからアクセスできます。

キャッシュまたはセッションを使用して、データテーブル (大きなデータ) を保存できます。ViewState と比較して、優れたパフォーマンスが得られます。

キャッシュは常にマシンのメモリを使用し、セッションは構成されたものを使用します。

Web ファームでは、セッションはローカル (アフィニティが設定されている場合にのみ機能) またはリモート (状態サーバーまたはデータベース、またはカスタム) にすることができますが、キャッシュは常にローカルです。

そのため、DataTable をキャッシュに格納するとメモリが消費されますが、シリアル化は使用されません。

PS: DataTable の代わりに DataSet を保存しても、ほとんど何も変わりません。

参照キャッシュの実装

于 2012-06-11T08:46:27.340 に答える
7

ViewState はどちらの側にも保存されません。要求と応答のたびにサーバーとブラウザーの間で送受信されるため、ViewState に大量のデータを格納することはお勧めできません。

于 2012-06-11T08:51:19.037 に答える
4

ViewState は指定した場所に保存されます。デフォルトでは、これはクライアントに送信されるページの隠しフィールドにあります。

ASP.NET は、指示があれば、ViewState を Session 内、つまりサーバー上に格納することもできます。

于 2015-01-09T15:42:23.673 に答える
1

ビューステートに大量のデータを保存すると、サイトが遅くなります。前のページの情報全体を保存するのではなく、クエリ文字列を使用して、各ページのデータベースから新しいコピーを取得します。

于 2012-06-11T08:55:07.573 に答える
0

非表示フィールドの状態情報ストアを表示します。情報は、この隠しフィールドでサーバーとクライアントの間を行き来します。

asp.net コントロールの場合、デフォルトで .net はすべてのコントロールにビュー ステートを実装します。そのため、そのページのボタンをクリックしてもテキスト ボックスの値が失われません。

于 2014-01-01T08:09:20.123 に答える