【问题标题】:Can't FindControl when RenderControl ascx in RenderBeginTag while overriding Panel覆盖面板时 RenderBeginTag 中的 RenderControl ascx 时无法 FindControl
【发布时间】:2011-11-30 12:57:45
【问题描述】:

我正在使用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;
 }
}

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

顺便说一句:我无法在CreateChildControls 方法中添加CustomControl,因为如果CustomContainer 有代码块,我就会遇到异常!

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

【问题讨论】:

    标签: asp.net user-controls overriding findcontrol webusercontrol


    【解决方案1】:

    您可能在呈现控件之前调用了ShowMessage。尝试在OnPreLoadOnLoad 期间拨打ShowMessage。基本上,在Render 之后的任何地方。

    【讨论】:

      猜你喜欢
      • 2014-11-24
      • 1970-01-01
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 2012-10-04
      • 1970-01-01
      相关资源
      最近更新 更多