Подтвердить что ты не робот

Когда использовать Literal vs LiteralControl?

Какое надлежащее использование этих двух элементов управления? Время от времени я наращиваю HTML-код в коде. Иногда я хочу выводить пробел, и в итоге я делаю что-то вроде этого.

const string twoSpaces = "  ";
p.Controls.Add(new Literal { Text = twoSpaces });

или

const string twoSpaces = "  ";
p.Controls.Add(new LiteralControl { Text = twoSpaces });

Мой вопрос: правильно ли это использование этих элементов управления? Должен ли я добавлять пробелы таким образом? Когда я использую один над другим?

Я понимаю, что я мог бы что-то сделать с помощью CSS, но я действительно хочу знать, каковы цели этих двух элементов управления, и есть ли что-то по своей сути неправильно с их использованием таким образом.

4b9b3361

Ответ 1

Literal использует ViewState и будет помнить любые обновления своих свойств в Postbacks. LiteralControl должен иметь свои свойства для каждой обратной передачи.

Кроме этого, будьте очень осторожны при использовании Literal. Если вы разрешаете пользователю вводить данные в теге Literal, вы, скорее всего, открыли атаку XSS.

Ответ 2

Крис Питман ответил на это правильно, но я просто хочу добавить еще несколько фактов обо всех.

Литерал - это элемент управления, который можно добавить как на страницу aspx, так и на код.

asp:Literal Text="text" runat="server"

Но LiteralControl не может быть добавлен на страницу aspx, а только позади кода. Вот почему LiteralControl не имеет своего ViewState, связанного с классом страницы.