C#でPage_Loadの後に動的コントロール値を取得しますか?
質問
通信する2つのWebパーツがあります。プロバイダーは、少なくともプロバイダーのPage_Loadイベントが発生するまで、コンシューマーに値(RID)を提供できません。そのため、消費者はPage_Loadが完了するまで、必要なRIDを知ることができません。そこで、Page_LoadCompleteにフックしました。問題があります。コンシューマは、このRIDに基づいて動的なコントロールを作成します。
今。これらの動的に作成されたコントロールは、Page_Loadの後に作成されます。そのため、それらのビューステートは復元されません(Page_Load内で作成された動的コントロールには値が復元されます)。
したがって、基本的に必要なのは、手動でビューステートをコントロールに復元する方法、またはPOST変数またはC#の同等物からコントロールの値を取得する方法です。
また、Page_Initでコントロールの値を取得できれば、それも機能します。
解決
Request.Formキー/値ペアの投稿から返されるすべての情報。そこをチェックして、キーでコントロールIDを検索すると、ビューステートを見ずに値を取得できます。
キーは指定したIDではなくクライアントIDになるため、各キーを調べて、コントロール名を含むキーを検索する必要があります。
他のヒント
コントロールが動的な場合、ポストバックが発生するまでViewStateになりません。したがって、ViewStateは、自分でViewStateに追加しない限り、初期ロードでは使用できません。
ViewState.Add("myRID", RID)
または、ViewStateは、とにかく大きくなりがちなので、ViewStateをオーバーロードしないでSessionStateに保存できます。 SessionStateを使用します。