我有一个 div
<div id="PageContent" runat="server"></div>
我正在像这样从后面的代码中添加一些 HTML
PageContent.InnerHtml ="<p> this is my text</p>";
现在我如何从我和文本之间的代码中添加用户控件之间的代码中添加用户控件,我还可以替换我的并在该位置添加用户控件吗?
我不想在 PageContent div 中使用任何占位符或面板。
我有一个 div
<div id="PageContent" runat="server"></div>
我正在像这样从后面的代码中添加一些 HTML
PageContent.InnerHtml ="<p> this is my text</p>";
现在我如何从我和文本之间的代码中添加用户控件之间的代码中添加用户控件,我还可以替换我的并在该位置添加用户控件吗?
我不想在 PageContent div 中使用任何占位符或面板。
这解决了我的问题
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 */ }
为了从代码后面呈现用户控制
你可以使用两个不同的 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>";