0

コントロールを動的に追加するページを作成します。コントロールの状態がデータベースから取得され、ポストバック時にコントロールがページに再追加されます。ユーザーは UI を介してコントロールを追加/削除できます。2 人のユーザーが同じページにいて、一方がコントロールを追加/削除すると、もう一方のユーザーが次にコントロールの状態を変更しようとすると、ViewState エラーが発生します。

"ビューステートの読み込みに失敗しました。ビューステートの読み込み先のコントロール ツリーは、前の要求でビューステートを保存するために使用されたコントロール ツリーと一致する必要があります。たとえば、コントロールを動的に追加する場合、ポストバック中に追加されたコントロールは、最初のリクエストで追加されたコントロールのタイプと位置。」

これは、ページが描画されるときに 1 つのコントロール セットを使用し、コントロールの状態が別のユーザーによって変更されたため、ポストバック時に別のコントロール セットを取得するためです。

エラーとその理由は理解していますが、ここに何かが欠けていると思います。コントロールを動的に追加し、コントロールの状態を変更する同時ユーザーを処理できるページを作成する方法はありますか?

4

1 に答える 1

1

現在のユーザーの状態をマスター(グローバル)状態から分離する必要があります。ポストバック時に、データベースのマスター定義に基づいてコントロール ツリーを構築する代わりに、現在のユーザーに固有のキャッシュされたコントロール ツリーを読み込みます。ViewState の再構築を通過したら、調整プロセスを開始します。それが自動であるか、ユーザーが参加できるようにするために別の UI をロードする必要があるかは、質問の範囲外です。

ポイントは、マスターの「ブランチ」をユーザーごとに保持し、より制御された方法でコミットおよび読み取りを行う必要があるということです。

于 2009-10-26T18:14:51.933 に答える