PlaceHolder vs Literal для добавления разметки HTML, сгенерированной во время выполнения

Этот вопрос указывает на Literal vs Label, в то время как этот вопрос указывает на Panel VS. PlaceHolder, но сегодня я обсуждал с моим коллегой использование PlacHolder vs Literal для добавления разметки HTML, которая создается во время выполнения. Оба элемента управления не производят никакой дополнительной разметки, но мы ищем правильный контроль для добавления сгенерированной разметки "на лету". ответ на этот вопрос предполагает использование как для добавления сгенерированной разметки, так что мне интересно, какой контроль/подход мы должны использовать для просто добавления сгенерированной разметки и ничего более.

Ответ 1

Ни одна из них не делает никакой разметки (что может быть очень хорошо). Тем не менее, Placeholder может содержать дочерние элементы управления, тогда как Literal не может.

Для сравнения, Placeholder может содержать другие элементы управления, но не имеет свойства Text.

Мне интересно, какой контроль/подход следует использовать для просто добавления и не более того.

Если "сгенерировано" означает конечный результат, это строка, я бы использовал Literal. Если вы создаете дерево управления, добавьте эти элементы управления в Placeholder.

Или, если вы хотите полностью опустить объявление серверного элемента управления:

<h2>Hello World</h2>
<p>The following is generated markup.</p>
<%= base.GetGeneratedMarkup() %>

Я считаю, что Literal по-прежнему создается под капотом, но он позволяет смешивать сгенерированный контент с частью разметки вашей страницы/элемента управления (аналогично Razor).

Ответ 2

PlaceHolder vs Literal for adding HTML

Основное отличие состоит в том, что элемент управления Literal имеет свойство Text (и режим), которое также сохраняется на Viewstate, PlaceHolder полностью пуст.

Итак, вы можете использовать элемент управления Literal для добавления прямого кода строки html, и вы можете использовать PlaceHolder для добавления некоторых других элементов управления, но не добавляя прямой код html.