メインの.aspxページには、2種類のユーザーコントロールを動的に登録するプレースホルダーがあります。
case "1":
var control = (ControlType)LoadControl("~/PathToControl.ascx");
control.Property = value;
control.Initialize();
placeholder.controls.add(control);
break;
case "2":
var control1 = (ControlType)LoadControl("~/PathToControl1.ascx");
control1.Property = value;
control1.Initialize();
placeholder.controls.add(control1);
break;
各コントロールにはいくつかのユーザーコントロールがあります。
ここで、メインページに送信ボタンがあり、上記のカスタムコントロールから各ユーザーコントロールの値を取得したいと思います。プレースホルダーのコントロールを取得しようとしましたが、ポストバック後のプレースホルダーが空です。
if(placeholder.Controls.count>0){
var userControl = ((UserControlType)placeholder.Controls[0]);
var controlName = userControl.FindControl("ControlName") as TextBox;
}
page_initでカスタムコントロールを作成しようとしましたが、それでもユーザーコントロールを取得できません。
誰かが私がこれを達成する方法を知っていますか?
解決
動的ユーザーコントロールは、訪問のたびにInitEventで設定する必要があります。
詳細については、http://msdn.microsoft.com/en-us/library/ms972976.aspx#viewstate_topic4を参照してください。