別のページを開いてそこでいくつかのポストバックを行うと、あるページで Viewstate 情報が消えるという現在の問題があります。
- ListPage を開き、選択したオプションを変更してポストバックを実行します
- 新しいタブで AddPage を開くボタンを押す
- AddPage で、いくつかのポストバックを実行するいくつかの新しいエントリを追加し、タブを閉じます
- ListPage に戻り、グリッドを更新してみてください
- ListPage では、viewstate は空です
そのため、ビューステートから値を格納して取得するプロパティがある場合、ステップ 5 でビューステートから null を取得します。
if (ViewState["Stuff"] == null)
return MyObject.Default;
else
return (MyObject)ViewState["Stuff"];
私の理解では、ビューステートの履歴サイズはデフォルトで 9 ( <sessionPageState historySize="9" />
) ですが、これが異なるページ間で共有されるとは思っていなかったので、この値を変更したくありません。
ページごとに生成された Guid を使用してセッションに保存することで、保存されたプロパティを回避できますが、フォーム コントロールとデータベースから値を取得したものはすべて再設定する必要があります。
ビューステートの履歴をタブ/ウィンドウ間で独立させる方法はありますか? またはそれを回避する方法はありますか?
それが役立つ場合は、各ページで Telerik コントロールを使用しています。
編集:この説明は、ビューステート情報がセッションに正確にどのように保存されているか、およびsessionPageState構成がそれにどのように影響するかを理解するのに役立ちました。