Как создать и вставить HTML во время выполнения?

Кто-нибудь может привести пример кода, как создавать и вставлять 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 не может быть изменена, так как элемент управления содержит блоки кода.

В чем причина этой ошибки? что это за блоки кода и как это исправить?


person Jack    schedule 01.03.2016    source источник


Ответы (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);
person Anderson Pimentel    schedule 01.03.2016
comment
Как определяется ваш asp:content? вот так <asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server"> - person Jack; 01.03.2016
comment
Я нашел источник ошибки, у меня уже есть HTML-тег внутри <asp:Content>. Это вызывает ошибку. Я только что добавил еще один div внутри <asp:Content> и использовал свойство Controls из этого div - person Jack; 01.03.2016
comment
И что эквивалентно ‹br›? - person Jack; 01.03.2016
comment
Я не думаю, что есть прямой эквивалент элемента управления <br>, но вы можете использовать LiteralControl("<br />"). Вы можете использовать HtmlGenericControl для других тегов, но не <br>, так как этот класс не поддерживает самозакрывающиеся теги: stackoverflow.com/questions/13493586/ - person Anderson Pimentel; 01.03.2016