ここに私のセットアップの基本があります:
System.Web.UI.Page から継承する BasePage クラスがあります。BasePage には 2 つのプロパティが実装されており、その get/set が ViewState コレクション内の 2 つの異なる項目から実行されるようになっています (例: BasePage の this.ViewState["Year"])。
BasePage から継承する別のクラスがあります。それを SpecificBasePage と呼びましょう。
最後に、SpecificBasePage を継承する aspx ページがあります。
ブレーク ポイントを追加し、コードを何度も実行したところ、最初のページ ロードで両方のビュー ステート プロパティに値が割り当てられ、最初のページ ロードのライフ サイクル全体で値が保持されることがわかりました。
ただし、ページがポストバックされると、Page_Load イベントおよびその他のイベント ハンドラー (ViewState をロードする必要がある場合) で、両方のプロパティが null を返します。this.ViewState.Count を調べると、コレクションにオブジェクトがないことがわかります。
ViewState に影響を与え、この動作を引き起こす可能性のあるどこかで私が行っていることを誰かが考えることができますか?
-- さらに、コードの一部に分離しました。初期ロード時に、OnInit でビューステート プロパティの値を指定します。これを OnLoad に移動すると、ポスト バック全体で値が保持されることがわかりました。追加されたビュー ステートの値は最初のページのライフサイクル全体で保持されますが、ポスト バックで破棄されますか?