我有一个用户控件,在页面加载时动态加载:
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>
我在页面上有一个点击事件,它会触发并提交一个 postback,并调用一个方法,在该方法中我试图查找控件并设置一些属性:
MyControl ctl = (MyControl)FindControl("mycontrol");
if (ctl != null){
ctl.MyProperty = true;
Response.Write("success");
}
else
Response.Write("fail");
这是在PostBack后写入失败,因此看起来我在查找控件时做错了什么。最好的方法是什么?
编辑:
I switched it to MyControl ctl = (MyControl)this.MyControlPlaceHolder.FindControl("mycontrol");
这使得它能够找到控件,但是当控件在回发后加载时,似乎属性没有设置。