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

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

2 ответа

Решение

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

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

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

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

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

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

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

PlaceHolder vs Literal for adding HTML

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

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

Другие вопросы по тегам