首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebPart RenderControl不呈现内容

WebPart RenderControl不呈现内容
EN

Stack Overflow用户
提问于 2011-03-24 08:34:12
回答 2查看 2.4K关注 0票数 3

我有一个自定义的web部件,我试图在其上调用RenderContents方法,但结果只包含web部件的周围div,而不包含任何子控件。

以这个简单的web部件为例:

代码语言:javascript
复制
namespace MyWebParts
{
  public class MyTestWebPart : WebPart
  {
    public MyTestWebPart()
    {
      this.CssClass = "myTestWebPart";
    }
    protected override void CreateChildControls()
    {
      base.CreateChildControls();

      this.Controls.Add(new LiteralControl("Nothing here yet."));
    }
  }
}

然后,在http处理程序中,我尝试实例化这个web部件并调用它的RenderControl方法。结果是<div class="myTestWebPart"></div>

有人知道为什么我没有把CreateChildControls的控件也添加到输出中吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-24 15:45:15

这是因为当您只实例化一个控件并在其上调用RenderControl时,如果没有将其添加到Controls集合中,那么它就不是导致所有事件触发的页面生命周期的一部分。

特别是调用EnsureChildControl的PreRendering没有被调用。

最简单解决方案是覆盖呈现,如下所示:

代码语言:javascript
复制
protected override void Render(HtmlTextWriter writer)
{
  EnsureChildControls();
  base.Render(writer);
}
票数 2
EN

Stack Overflow用户

发布于 2011-03-24 15:17:35

我建议用render方法编写代码,而不是用createchild控件编写

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5413369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档