如何在运行时创建和插入HTML?

时间:2016-03-01 16:16:30

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

有人会给出一个代码示例,说明如何在运行时创建和插入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);
            }
}

它不起作用(见下面的错误)并且不是完整代码,例如,哪个类等同于生成<span>

我收到此错误:

  

由于控件无法修改Controls集合   包含代码块

错误的原因是什么?哪些是代码块,我该如何解决?

1 个答案:

答案 0 :(得分: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);