ページの読み込み時に動的に読み込まれるユーザー コントロールがあります。
protected void Page_Load(object sender, EventArgs e)
{
MyControl ctl = (MyControl)LoadControl(controlPath);
ctl.ID = "mycontrol";
this.MyControlPlaceHolder.Controls.Add(ctl);
}
ページのフロント エンド:
<asp:PlaceHolder runat="server" ID="MyControlPlaceHolder"></asp:PlaceHolder>
コントロールを見つけていくつかのプロパティを設定しようとしているメソッドを開始してポストバックし、呼び出すページにクリックイベントがあります。
MyControl ctl = (MyControl)FindControl("mycontrol");
if (ctl != null){
ctl.MyProperty = true;
Response.Write("success");
}
else
Response.Write("fail");
これはポストバック後の書き込み失敗なので、コントロールを見つける際に何か間違ったことをしているようです。これを行う最善の方法は何ですか?
編集:
I switched it to MyControl ctl = (MyControl)this.MyControlPlaceHolder.FindControl("mycontrol");
これにより、コントロールが検出されましたが、ポストバック後にコントロールが読み込まれると、プロパティが設定されていないように見えます。