ASP.Net: литерал против метки

102

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

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

Я лично считаю, что добавление <SPAN>тегов в свой HTML-код очень раздражает, и я никогда не применяю стили через ASP, и поэтому LITERALкажется, что это то, что следует использовать большую часть времени ... но я обеспокоен тем, что есть другие соображения или преимущества для используя ЭТИКЕТКУ, о которой я не знаю.

Можно ли на 100% заменить любые LABELs на LITERALs, если мы не применяем к ним стили? НЕТ других соображений?

Чак Ле Батт
источник

Ответы:

126

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

Таким образом, можно упростить стилизацию ярлыков, но если вы просто вставляете текст, вам подойдут литералы. Литеральные элементы управления также имеют удобное свойство, Modeкоторое управляет отображением текста. Его можно закодировать в HTML, отобразить без каких-либо изменений или удалить «неподдерживаемые элементы языка разметки».

Если вы не прилагая каких - либо стилей (например , с помощью Label«s CssClassсобственности), то это будет отлично заменить Labelэлементы управления с Literalэлементами управления.

Грэм Кларк
источник
1
Итак, на всякий случай, здесь нет никаких других соображений? Я спрашиваю, потому что вы пишете «главное отличие ...». Очевидно, главное отличие меня не интересует. Спасибо.
Чак Ле Батт
2
@Django: Ответ Криса Марисика действительно важен; Если Labelвам нужен <label>элемент HTML, всегда следует использовать элементы управления ASP.Net . Кроме того, метки отображают текст между <spans>, литералы - нет, а литералы дают вам больший контроль над тем, как отображается текст. Для любого элемента управления нет особых событий, и их содержимое можно получить в коде программной части точно так же (через Textсвойство).
Грэм Кларк
2
ПРОВЕРКИ! РАДИО-КНОПКИ! Если вы используете Labelэлементы управления, вы можете добавить AssociatedControlIDатрибут с идентификатором флажка или переключателя, с которым связана метка. Таким образом, вы можете щелкнуть метку, и соответствующий элемент управления будет активирован. Увеличение кликабельной целевой области также упростит использование пользовательского интерфейса.
Гарри Пехконен
34

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

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

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

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

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

Крис Маришич
источник
19

введите описание изображения здесь

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

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

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

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

Шивпрасад Коирала
источник
3

Разница между ч / б меткой и буквальным контролем в 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

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

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

Рэй Ли
источник
1
Буквально mode="PassThrough": techrepublic.com/blog/software-engineer/…
PreguntonCojoneroCabrón