ASP.Net: Literal vs Etiqueta

102

Solo quería escuchar a algunas autoridades sobre cuándo y dónde debería usar un LITERALcontrol sobre un LABEL.

Según tengo entendido, la diferencia es la siguiente: A LABELse puede diseñar mediante las <SPAN>etiquetas que se agregan.

Personalmente, considero que la adición de <SPAN>etiquetas en mi HTML es muy molesta y nunca aplico estilos a través de ASP, por lo que LITERALparece ser lo que debería usarse la mayor parte del tiempo ... pero me preocupa que haya otras consideraciones o beneficios para usando una ETIQUETA sobre ella que no conozco.

¿Es 100% correcto reemplazar cualquier LABELs con LITERALs, siempre que no les apliquemos estilos? ¿NO hay otras consideraciones?

Chuck Le Butt
fuente

Respuestas:

126

Sí, la principal diferencia es que los Literalcontroles solo representan el texto, pero los Labelcontroles lo rodean con <span>etiquetas (a menos que use la AssociatedControlIDpropiedad, en cuyo caso un Labelcontrol representará una <label>etiqueta).

Por lo tanto, las etiquetas se pueden diseñar más fácilmente, pero si solo está insertando texto, los literales son el camino a seguir. Los controles literales también tienen una propiedad útil Modeque gobierna cómo se representa el texto. Puede tenerlo codificado en HTML o renderizado sin cambios, o eliminar cualquier "elemento de lenguaje de marcado no admitido".

Si no está aplicando ningún estilo (por ejemplo, usando Labella CssClasspropiedad de), estará bien reemplazar los Labelcontroles con Literalcontroles.

Graham Clark
fuente
1
Entonces, solo para estar seguro aquí, ¿NO hay otras consideraciones en absoluto? Pregunto porque escribes "la principal diferencia es ...". Obviamente no me interesa la principal diferencia. Gracias.
Chuck Le Butt
2
@Django: La respuesta de Chris Marisic es realmente importante; Los Labelcontroles ASP.Net siempre deben usarse cuando desee un <label>elemento HTML . Aparte de eso, las etiquetas representan texto entre <spans>, los literales no, y los literales le dan un mayor control sobre cómo se representa el texto. No hay eventos especiales en ninguno de los controles, y se puede acceder a su contenido en el código subyacente exactamente de la misma manera (a través de la Textpropiedad).
Graham Clark
2
Casillas de verificación ¡BOTONES DE RADIO! Si usa Labelcontroles, puede agregar el AssociatedControlIDatributo con el ID de la casilla de verificación o el botón de radio con el que está asociada la etiqueta. De esa forma, puede hacer clic en la etiqueta y se activará el control asociado. Hacer que el área objetivo en la que se puede hacer clic sea más grande también hará que la interfaz de usuario sea más fácil de usar.
Harry Pehkonen
34

Cuando tienes un código similar a

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

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

Es óptimo usar un elemento de etiqueta porque lo convertirá correctamente en un labelelemento html con el foratributo correcto apuntando a su cuadro de texto, de modo que si un usuario hace clic en la etiqueta, automáticamente coloca su cursor dentro del campo de texto.

De lo contrario, use el literal a menos que tener el texto envuelto en un spansea ​​beneficioso para el estilo CSS.

Chris Marisic
fuente
19

ingrese la descripción de la imagen aquí

Para mostrar texto simple, texto formateado o texto HTML tal como está, comenzaré con literal primero ya que es liviano y no emite etiquetas SPAN adicionales.

Vea este video que demuestra acerca de esas etiquetas adicionales.

Pero no podemos aplicar CSS en un literal, no podemos agregar atributos como Label1.Attributes.Add a un literal. Cualquier cosa orientada al contenedor no se puede lograr ya que literal no está rodeado por una etiqueta SPAN.

También es triste ver que muchos tipos de ASP.NET Webform eligen por defecto la etiqueta para mostrar el texto sin saber que genera etiquetas SPAN adicionales que pueden hacer que su HTML sea pesado si tiene muchas etiquetas.

Shivprasad Koirala
fuente
3

Diferencia etiqueta b / n y control literal en asp.net

En casi todos los sentidos, un control Literal es lo mismo que un control Label. Ambos controles se utilizan para mostrar texto en un formulario web. (La propiedad Text se puede establecer en HTML o en el código subyacente).

La mayor diferencia es que el control Etiqueta envuelve el texto en un formato span. Cualquier estilo que se aplique al control Etiqueta se representará utilizando la stylepropiedad de span.

Por ejemplo, el siguiente HTML

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

Se representará como

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

Un control literal no genera ninguna etiqueta circundante, por lo que el texto se muestra como está:

Por ejemplo, el siguiente HTML

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

se representará como

Literal Control Text

Entonces, si desea aplicar cualquier estilo a un que use el control Label, de lo contrario, use el control Literal. Debido a esto, el control Literal es un control de peso ligero, en comparación con el control Label.

FYI: La jerarquía de herencia para la clase de control Literal es (Objeto => Control => Literal) , mientras que para el control de Etiqueta, la jerarquía es (Objeto => Control => WebControl => Etiqueta)

Rae Lee
fuente
1
Literal mode="PassThrough": techrepublic.com/blog/software-engineer/…
PreguntonCojoneroCabrón