【问题标题】:How to create and insert HTML at run time?如何在运行时创建和插入 HTML?
【发布时间】:2016-06-14 04:02:07
【问题描述】:

谁能给出一个代码示例如何在运行时创建和插入 HTML?

HTML 是这样的:

 <div class="row">
       <div class="col-md-3">
            <img src="example.png" class="profileImage" /> <br />
            <span class="name">Name</span>
            <div class="ver"></div>
            <img class="flag ver" src="star.png" />
            <div class="horizontalBar"></div>
        </div>
    </div>

我得到的结果是:

 public partial class MyPage : System.Web.UI.Page
    {
     protected void Page_Load(object sender, EventArgs e)
            {
                this.Header.DataBind();
                ContentPlaceHolder contents = Page.Master.FindControl("MainContent") as ContentPlaceHolder;
                Panel row = new Panel() { CssClass = "row" };
                Panel col = new Panel() { CssClass = "col-md-3" };
                Image profile = new Image()
                {
                    CssClass = "profileImage",
                    ImageUrl = "example.jpg"
                };

                row.Controls.Add(col);
                col.Controls.Add(profile);
                contents.Controls.Add(row);
            }
}

它不起作用(见下面的错误)并且不是完整的代码,例如,什么类相当于生成&lt;span&gt;

我收到此错误:

无法修改 Controls 集合,因为该控件 包含代码块

这个错误的原因是什么?那些代码块是什么,我该如何解决这个问题?

【问题讨论】:

    标签: c# html asp.net windows dynamic-content


    【解决方案1】:

    我已经在这里测试了代码并且它正在工作。

    相当于span的控件是Label,但我认为一定有更好的方法来做到这一点。

    如果确实需要动态插入 HTML 代码,可以使用LiteralControl 注入,如下所示:

    var html = new LiteralControl(@"<div class=""row"">
                                      <div class=""col-md-3"">
                                        <img src=""example.png"" class=""profileImage"" />
                                        <br />
                                        <span class=""name"">Name</span>
                                        <div class=""ver""></div>
                                        <img class=""flag ver"" src=""star.png"" />
                                        <div class=""horizontalBar""></div>
                                      </div>
                                   </div>");
    contents.Controls.Add(html);
    

    【讨论】:

    • 你的 asp:content 是如何定义的?像这样&lt;asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server"&gt;
    • 我找到了错误的根源,我已经在&lt;asp:Content&gt; 中添加了一个 HTML 标签。这会导致错误。我刚刚在 &lt;asp:Content&gt; 中添加了另一个 div 并使用了这个 div 中的 Controls 属性
    • 那么
      的等价物是什么?
    • 我认为&lt;br&gt; 没有直接等效控件,但您可以使用LiteralControl("&lt;br /&gt;")。您可以将HtmlGenericControl 用于其他标签,但不能使用&lt;br&gt;,因为此类不支持自闭合标签:stackoverflow.com/questions/13493586/…
    猜你喜欢
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 2020-07-24
    • 2020-09-12
    • 1970-01-01
    相关资源
    最近更新 更多