ASP.Net: буквальный против лейбла - PullRequest
96 голосов
/ 22 июля 2010

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

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

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

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

Ответы [ 4 ]

122 голосов
/ 22 июля 2010

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

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

Если вы не применяете какие-либо стили (например, при использовании свойства Label *1014*), можно заменить элементы Label элементами управления Literal.

33 голосов
/ 22 июля 2010

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

<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 голосов
/ 16 июля 2014

enter image description here

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

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

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

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

2 голосов
/ 24 января 2016

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...