0

我正在使用Panel控件创建一个容器,如下所示:

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;
 }
}

当我试图找到userControlId我渲染的带有 id 的控件时,它总是返回 null!有谁知道发生了什么?我该如何解决这个问题?

顺便说一句:我不能添加CustomControlinCreateChildControls方法,因为如果CustomContainer 有代码块我得到一个异常!

无法修改 Controls 集合,因为该控件包含代码块(即 <% ... %>)。

4

1 回答 1

0

您可能ShowMessage在控件呈现之前调用。尝试ShowMessageOnPreLoad或期间调用OnLoad。基本上,在Render.

于 2011-10-04T19:30:01.207 回答