0

ControlクラスのViewStateプロパティを介してデータを永続化する必要があるコントロールを作成しました。私たちのクラスサブクラスは、ViewStateプロパティへのアクセスを取得するために厳密に制御します(Pageオブジェクトで保護されています)。OnInitのPage.Controlsにコントロールを追加してから、OnPreLoadでViewStateプロパティを設定しようとしています。

ページのViewStateをデコードして調べるとき、値は書き出されていないため、後で取得することはできません。

ViewStateプロセスに参加するためのコントロールを取得する方法を知っている人はいますか?

4

3 に答える 3

1

問題は、コントロールをページに直接追加することです。残念ながら、これはコントロール階層の上位にありすぎて、フォームの ViewState 処理に参加できません。コントロールを実際の ASPNet フォームの Controls コレクションのどこかに追加すると、それは LoadViewStateRecursive と SaveViewStateRecursive に正常に参加します。

于 2008-09-25T01:24:48.313 に答える
0

OnInitでコントロールを作成し、OnLoad中にPage.Controlsに追加してみてください。

于 2008-09-25T00:03:09.820 に答える
0

ViewState は、OnInit の後、OnLoad の前まで読み込まれません。

これは、私の以前の質問への回答としてこれを投稿したページ ライフサイクル ( GregMac ) の大まかな概要です。

  • 初期化する
  • LoadViewState
  • ポストバック データの読み込み
  • 呼び出し制御ロード イベント
  • Load イベントの呼び出し
  • 通話制御イベント
  • PreRender の制御
  • プリレンダー
  • ViewState を保存
  • アンロード

  • 于 2008-09-25T00:39:00.950 に答える