2010-07-22 17 views
87

Solo quería escuchar algunas autoridades sobre cuándo y dónde debe usar un control LITERAL sobre LABEL.ASP.Net: Literal vs Etiqueta

Según tengo entendido, la diferencia es esta: A LABEL se puede diseñar a través de las etiquetas <SPAN> que se agregan.

Personalmente, encontrar las etiquetas <SPAN> en mi HTML es muy molesto y nunca aplicar estilos a través de ASP, por lo que LITERAL s parece ser lo que se debe usar la mayor parte del tiempo ... pero me preocupa hay otras consideraciones o ventajas de usar una ETIQUETA sobre ella que desconozco.

¿Es 100% correcto reemplazar LABEL s con LITERAL s, siempre que no les apliquemos estilos? ¿No hay otras consideraciones?

Respuesta

114

Sí, la diferencia principal es que los controles Literal solo los presentan a cabo el texto, pero Label controles rodearlo de <span> etiquetas (A menos que utilice la propiedad AssociatedControlID, en cuyo caso un control Label rendirá una etiqueta <label>).

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

Si usted no está aplicando cualquiera de los estilos (por ejemplo, mediante el uso de Label 's CssClass propiedad), que estará bien para reemplazar Label controles con Literal controles.

+1

Entonces, solo para estar seguro aquí, NO hay otras consideraciones en absoluto? Lo pregunto porque escribes "la principal diferencia es ...". Obviamente, no estoy interesado en la diferencia principal. Gracias. –

+2

@Django: la respuesta de Chris Marisic es realmente importante; Los controles ASP.Net 'Label' siempre deben usarse cuando desee un elemento HTML'

+0

¡Maravilloso! Eso explica por qué se llama Label, también. ¡Muchas gracias! –

32

Cuando usted tiene un código similar al

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

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

Lo mejor es utilizar un elemento de etiqueta porque va correctamente convertirlo en un elemento html label con el atributo correcto for la orientación de su cuadro de texto, por lo que si una el usuario hace clic en la etiqueta que establece automáticamente su cursor dentro del campo de texto.

De lo contrario, utilice el literal a menos que tener el texto envuelto en un span sería beneficioso para el estilo css.

+1

Otro gran consejo que no conocía. ¡Gracias! –

+2

Sí, esta es la razón principal por la que uso etiquetas yo mismo, proporciona una experiencia de usuario un poco más agradable. –

+2

Absolutamente. Siempre me pregunté cómo replicar este poco de HTML en ASP.Net. Estoy tan feliz de que finalmente lo entiendo. –

12

enter image description here

Para mostrar texto simple, texto con formato HTML o texto, ya que es Voy a comenzar con la primera literal como su peso ligero y no emite cabo etiquetas SPAN adicionales.

Ver this 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. No se puede lograr ningún elemento orientado al contenedor ya que literal no está rodeado por una etiqueta SPAN.

También es triste ver que mucha gente de ASP.NET Webform elige de forma predeterminada la etiqueta para mostrar el texto sin saber que genera etiquetas SPAN adicionales que pueden hacer su HTML pesado si tiene mucha etiqueta.

1

diferencia b/w Label y Control literal en asp.net

En casi todas las formas en que un control literal es el 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 Label ajusta el texto en span cuando se procesa. Cualquier estilo que se aplique al control Label se representará con la propiedad style del span.

Por ejemplo, el siguiente código HTML

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

será mostrado como

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

Un control literal no se muestra no se emiten las etiquetas de los alrededores, por lo que el texto como es :

Por ejemplo, el siguiente código HTML

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

será mostrado como

Literal Control Text

lo tanto, si desea aplicar ningún estilo a un control Label que el uso de cualquier otro uso del control literal. Debido a esto, el control Literal es un control ligero, cuando se compara con el control Label.

FYI: La jerarquía de herencia para la clase de control literal es (Object => Control => literal), donde como para el control Label, la jerarquía es (Object => Control => WebControl => Label)

Cuestiones relacionadas