動的に追加された Control サブクラスを使用して Control.ViewState にアクセスするにはどうすればよいですか?
質問
Control クラスの ViewState プロパティを介してデータを永続化する必要があるコントロールを作成しました。私たちのクラスのサブクラスは、ViewState プロパティ (Page オブジェクトで保護されています) へのアクセスを厳密に制御します。OnInit で Page.Controls にコントロールを追加し、OnPreLoad で ViewState プロパティを設定しようとします。
ページの ViewState をデコードして調べるとき、値は書き出されておらず、したがって後で取得することはできません。
コントロールを ViewState プロセスに参加させる方法を知っている人はいますか?
解決
問題は、コントロールをページに直接追加することです。残念ながら、これはコントロール階層の上位にありすぎて、フォームの ViewState 処理に参加できません。実際の ASPNet フォームの Controls コレクションのどこかにコントロールを追加すると、そのコントロールは LoadViewStateRecursive および SaveViewStateRecursive に正常に参加します。
他のヒント
OnInit でコントロールを作成し、OnLoad 中に Page.Controls に追加してみてください。
ViewState は OnInit の後、OnLoad の前までロードされません。
ページのライフサイクルの大まかな概要は次のとおりです(グレッグマック)私の以前の質問への回答としてこれを投稿しました。
所属していません StackOverflow