10

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

ответ

13

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

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

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

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

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

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

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

6
PlaceHolder vs Literal for adding HTML 

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

Таким образом, вы можете использовать Буквальное управление, чтобы добавить некоторые прямые строки HTML-код, и вы можете использовать Заполнитель, чтобы добавить некоторые другие элементы управления, но не добавляя никакого прямой код HTML.