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)