ASP.Net: буквальный против лейбла

Я просто хотел услышать некоторые авторитеты о том, когда и где вы должны использовать LITERAL контроль над LABEL,

Насколько я понимаю, разница такая: LABEL может быть стилизован через <SPAN> добавленные теги.

Я лично нахожу дополнение <SPAN> теги в моем HTML очень раздражают и никогда не применяют стили через ASP, и поэтому LITERAL Похоже, это то, что следует использовать в большинстве случаев... но я обеспокоен тем, что использование надписей над ним имеет и другие соображения или преимущества, о которых я не знаю.

Это 100% нормально, чтобы заменить любой LABEL с LITERAL s, если мы не применяем к ним стили? НЕТ ли других соображений?

4 ответа

Решение

Да, главное отличие в том, что Literal элементы управления просто визуализируют текст, но Label элементы управления окружают его <span> теги (если вы не используете AssociatedControlID собственность, в этом случае Label управление будет отображать <label> тег).

Таким образом, ярлыки можно стилизовать проще, но если вы просто вставляете текст, лучше использовать литералы. Литеральные элементы управления также имеют удобное свойство Mode который управляет тем, как текст отображается. Вы можете сделать это в HTML-кодировке или визуализировать без каких-либо изменений или удалить любые "неподдерживаемые элементы языка разметки".

Если вы не применяете какие-либо стили (например, используя Label "s CssClass собственность), будет нормально заменить Label контролирует с Literal управления.

Когда у вас есть код, похожий на

<asp:Label EnableViewState="false" ID="Label8" runat="server" 
        AssociatedControlID="txtEmail">Email Address:</asp:Label>

<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>

Оптимально использовать элемент метки, потому что он правильно превратит его в HTML label элемент с правильным for Атрибут, нацеленный на ваше текстовое поле, так что если пользователь нажимает на метку, он автоматически устанавливает курсор внутри текстового поля.

В противном случае используйте литерал, если текст не заключен в span было бы полезно для CSS-стиля.

Чтобы отобразить простой текст, форматированный текст или текст HTML, как он есть, я начну с литерала вначале как его легкого веса и не выделяет лишних тегов SPAN.

Посмотрите это видео, которое демонстрирует эти дополнительные теги.

Но мы не можем применять CSS к литералу, мы не можем добавлять такие атрибуты, как Label1.Attributes.Add к литералу. Любые вещи, ориентированные на контейнер, не могут быть достигнуты, так как литерал не окружен тегом SPAN.

Также печально видеть, что многие ребята из ASP.NET Webform по умолчанию выбирают метку для отображения текста, не зная, что он генерирует дополнительные теги SPAN, которые могут сделать ваш HTML тяжелым, если у вас много меток.

Разница ч / б метка и буквальный контроль в asp.net

Почти во всех отношениях элемент управления Literal такой же, как элемент управления Label. Оба эти элемента управления используются для отображения текста в веб-форме. (Свойство Text может быть установлено в HTML или в выделенном коде.)

Самое большое отличие состоит в том, что элемент управления Label переносит текст в span когда оказано. Любой стиль, который применяется к элементу управления Label, будет отображаться с использованием style собственность span,

Например, следующий HTML

<asp:Label ID="Label1" runat="server"  Text="Label Text"
ForeColor="Red" Font-Bold="true" ></asp:Label>

Будет отображаться как

<span id="Label1" style="color:Red;font-weight:bold;">Label Text</span>

Элемент управления Literal не выводит никаких окружающих тегов, поэтому текст отображается так:

Например, следующий HTML

<asp:Literal ID="Literal1" runat="server" 
Text="Literal Control Text"></asp:Literal>

будет отображаться как

Literal Control Text

Поэтому, если вы хотите применить какие-либо стили к, чем использовать элемент управления Label, в противном случае используйте элемент управления Literal. Из-за этого элемент управления Literal представляет собой легкий элемент управления по сравнению с элементом управления Label.

К сведению: иерархия наследования для класса элемента управления Literal имеет вид (Object => Control => Literal), где, что касается элемента управления Label, иерархия имеет вид (Object => Control => WebControl=> Label)

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