0

動的なユーザーコントロールが失われていることを解決するために時間を無駄にした後、ViewState私は永久に無効にすることにしViewStateました。

問題は、私が今何をすべきかということです。ポストバック後にダイナミックコントロールが失われないように、ダイナミックコントロールの状態をどのように維持する必要がありますか。代わりにSessionを使用することを考えていますが、値が上書きされないように、ユーザーが開いたページ/タブごとに一意のキーを生成する必要があります(右?)。それを行うための最良の方法は何ですか?

4

1 に答える 1

0

動的ユーザーコントロールのビューステートを保証するには、次のことを確認する必要があります。

  • ダイナミックコントロールは、すべてのポストバックシナリオで作成されます
  • それらはページのライフサイクルのできるだけ早い段階で作成されます-初期化とロード状態が最善の策です(制御イベントでそれらをロードすることは機能しない可能性があります)
  • 動的コントロール階層は完全に同じである必要があり、階層内のすべてのコントロールのIDは前のリクエストと同じである必要があります
  • 常にIDを割り当て(そうでない場合は自動生成され、異なる値を持つ可能性があります)、コントロールツリーにコントロールを追加する前に割り当てを行う必要があります。

ビューステートストアを非表示フィールドではなくセッションと言うように変更しても、ASP.NETランタイムがすでにビューステートを読み込んでいるか、コントロールをビューステートデータ(IDと階層から推測される)に関連付けることができないという問題は解決されません。 )。

于 2013-01-10T10:55:58.570 に答える