ASP.Net: Literal vs Label


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Елементи керування ASP.Net завжди слід використовувати, коли потрібно HTML- <label>елемент. Крім цього, Мітки відображають текст між <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>

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

В іншому випадку використовуйте буквене позначення, якщо тільки текст, загорнутий у текст, spanне буде корисним для стилів css.


19

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

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

Дивіться це відео, де демонструються додаткові теги.

Але ми не можемо застосувати CSS до літералу, ми не можемо додавати такі атрибути, як Label1.Attributes.Add до literal. Будь-які речі, орієнтовані на контейнери, неможливо досягти, оскільки буквальний не оточений тегом SPAN.

Також сумно бачити багато хлопців веб-форми ASP.NET за замовчуванням вибирати мітку для відображення тексту, не знаючи, що це генерує додаткові теги SPAN, які можуть зробити ваш HTML важким, якщо у вас є багато етикетки.


3

Різниця в / з етикетки та буквального контролю в asp.net

Практично у всіх напрямках управління Literal - це те саме, що і контроль Label. Обидва ці елементи керування використовуються для відображення тексту на веб-формі. (Властивість Text можна встановити в HTML або в коді.)

Найбільша відмінність полягає в тому, що елемент керування Label загортає текст у вікні span. Будь-який стиль, застосований до елемента управління міткою, буде наданий за допомогою 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. Через це літеральний контроль - це контроль легкої ваги в порівнянні з контролем Label.

FYI: Ієрархія спадкування для класу управління Literal є (Object => Control => Literal) , де для управління Label ієрархія (Object => Control => WebControl => Label)


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.