簡體   English   中英

WebPart RenderControl不呈現內容

[英]WebPart RenderControl doesn't render contents

我有一個自定義Web部件,我試圖調用RenderContents方法,但結果只包含Web部件的周圍div,而不是任何子控件。

以這個簡單的Web部分為例:

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獲取我的控件也添加到輸出?

這是因為當你只是實例化一個控件並在其上調用RenderControl時,如果它沒有被添加到Controls集合中,那么它就不是Page生命周期的一部分,它會導致觸發所有事件。

特別是不調用調用EnsureChildControl的PreRendering。

簡單的解決方案是覆蓋Render,如下所示:

protected override void Render(HtmlTextWriter writer)
{
  EnsureChildControls();
  base.Render(writer);
}

我建議用render方法編寫代碼,而不是用createchild控件編寫代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM