2013-10-08 39 views
2

我有一個div如何在特定位置的div中添加用戶控件?

<div id="PageContent" runat="server"></div> 

我從代碼中添加一些HTML到它背後這樣

PageContent.InnerHtml ="<p> this is my text</p>"; 

現在,我怎麼可以在代碼中添加一個用戶控件背後文本之間,我也可以替換我的並在該位置添加用戶控件?

我不想在PageContent div中使用任何佔位符或面板。

+0

用戶控件創建自己的自定義控件接受'templa te字符串'並且調用'.Render()' –

+1

偉大的問題。 +1。 –

回答

1

這解決了我的問題

public string RenderControlToHtml(Control ControlToRender) 
     { 
      System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
      System.IO.StringWriter stWriter = new System.IO.StringWriter(sb); 
      System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(stWriter); 
      ControlToRender.RenderControl(htmlWriter); 
      return sb.ToString(); 
     } 

     var message = "<p>this is my {0} text</p>"; 

     var ctrl1 = new UserControl1(); 

     PageContent.InnerHtml = String.Format(message,RenderControlToHtml(ctrl1)); 

您還需要添加

public override bool EnableEventValidation 
     { 
      get { return false; } 
      set { /* Do nothing */} 
     } 

     public override void VerifyRenderingInServerForm(Control control) 
     { /* Do nothing */ } 

爲了從代碼渲染背後

+0

+!,感謝您回覆發佈答案。 –

+0

@DeeMac歡迎:) –

-1

您可以使用兩個不同的div來完成。

如:

<div id="PageContentBegin" runat="server"></div> 

<ucl id="UserControlId" runat="server" Visible="False"></ucl> 

<div id="PageContentEnd" runat="server"></div> 


PageContentBegin.InnerHtml ="<p> this is my </p>"; 
UserControlId.Visible = True 
PageContentBegin.InnerHtml ="<p> text </p>"; 
+1

我不喜歡這個解決方案。它避免了將用戶控件「注入」其他標記爲一個div的問題。感覺有點像使用兩個div來分割標記的解決方法。如果用戶控件不在那裏顯示會怎麼樣?例如,在另一個div中,'

這是我的','

',這是沒有意義的。 –

+0

我想添加用戶控件在給定的div在一個特定的位置,我添加用戶控件從後面的代碼提供的HTML div後。 –

相關問題