【问题标题】:How to add a User Control in a div at a particular position?如何在特定位置的 div 中添加用户控件?
【发布时间】:2013-10-08 12:55:57
【问题描述】:

我有一个 div

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

我正在从后面的代码中添加一些 HTML

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

现在我如何从 mytext 之间的代码中添加用户控件,我还可以替换我的并在该位置添加用户控件吗?

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

【问题讨论】:

  • 创建您自己的自定义控件接受template string 并调用.Render()

标签: c# html asp.net c#-4.0 user-controls


【解决方案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 */ }

为了从后面的代码中呈现用户控件

【讨论】:

    【解决方案2】:

    你可以使用两个不同的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>";
    

    【讨论】:

    • 我不喜欢这个解决方案。它避免了将用户控件“注入”到其他标记中的问题。感觉有点像使用两个 div 来拆分标记的解决方法。如果用户控件不在那里显示怎么办?例如,您会在一个 div 中使用“

      this is my”,而在另一个 div 中使用“text

      ”,这没什么意义。
    • 我想在给定的 div 中的特定位置添加用户控件,并且在向 div 提供 HTML 后,我正在从后面的代码中添加用户控件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多