Asp.net 覆盖面板时在RenderBeginTag中的RenderControl ascx中找不到控制
我正在使用面板控件创建一个容器,如下所示:Asp.net 覆盖面板时在RenderBeginTag中的RenderControl ascx中找不到控制,asp.net,user-controls,overriding,findcontrol,webusercontrol,Asp.net,User Controls,Overriding,Findcontrol,Webusercontrol,我正在使用面板控件创建一个容器,如下所示: public class CustomContainer : Panel { public override void RenderBeginTag(HtmlTextWriter writer) { var control this.Page.LoadControl("web user control path.ascx"); control.ID = "userControlId"; control.RenderControl(wri
public class CustomContainer : Panel
{
public override void RenderBeginTag(HtmlTextWriter writer)
{
var control this.Page.LoadControl("web user control path.ascx");
control.ID = "userControlId";
control.RenderControl(writer);
base.RenderBeginTag(writer);
}
public void ShowMessage(string message)
{
var control = this.FindControl("userControlId"); // control here is null!!
var custom = control as CustomControl;
custom.Message = message;
}
}
当我试图找到id为userControlId的控件时,它总是返回null!
有人知道发生了什么吗?我如何解决这个问题
顺便说一句:我不能在CreateChildControls方法中添加CustomControl,因为如果CustomContainer有代码块,我会得到一个异常
无法修改控件集合,因为控件
包含代码块,即
您可能在呈现控件之前调用ShowMessage。尝试在OnPreLoad或OnLoad期间调用ShowMessage。基本上,渲染后的任何位置