Когда использовать 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, но я действительно хочу знать, каковы цели этих двух элементов управления, и есть ли что-то по своей сути неправильно с их использованием таким образом.
Ответы
Ответ 1
Literal использует ViewState и будет помнить любые обновления своих свойств в Postbacks. LiteralControl должен иметь свои свойства для каждой обратной передачи.
Кроме этого, будьте очень осторожны при использовании Literal. Если вы разрешаете пользователю вводить данные в теге Literal, вы, скорее всего, открыли атаку XSS.
Ответ 2
Крис Питман ответил на это правильно, но я просто хочу добавить еще несколько фактов обо всех.
Литерал - это элемент управления, который можно добавить как на страницу aspx, так и на код.
asp:Literal Text="text" runat="server"
Но LiteralControl не может быть добавлен на страницу aspx, а только позади кода. Вот почему LiteralControl не имеет своего ViewState, связанного с классом страницы.