[ASP.NET] Simple pero poderoso: Literal webcontrol

Justamente tenia este post en el tintero porque hace unos dias conversamos en los grupos de noticias de asp.net sobre la diferencia de webcontrol Literal y Label, y justamente hoy leí el post en Geeks.ms de Sergio Tarrillo: Diferencia entre un control Litral y un control Label (asi que los invito a leerlo con enlaces interesantes)

Asi que esta primera parte ya estaba escrita.
Si tenemos la famosa frase: «Que la fuerza te acompañe», y utilizamos los dos controles para visualizar

<asp:Label ID="lblEjemplo" runat="server" Text="Que la Fuerza te acompañe."></asp:Label>
<br />
<asp:Literal ID="ltlEjemplo" runat="server" Text="Que la Fuerza te acompañe."></asp:Literal>

Como dice Sergio en tu articulo, renderiza en esto si vemos el HTML resultante…

<span id="ctl00_contenidoCentral_lblEjemplo">Que la Fuerza te acompañe.</span>
<br />
Que la Fuerza te acompañe.
(aqui el Id del Label en el browser del cliente quedo armado: ctl00_contenidoCentral_lblEjemplo, porque esta bajo un MasterPage)
 
Como decia en ese post que hago referencia, me parece formidable tener un control sencillo pero a la vez potente; O sea, no podemos asignar estilos como el Label (con la propiedad CssClass) es limitado en ese aspecto, pero poderozo por su simpleza (es mi opinion personal) ya que es parecido a un Response.Write de  los viejos como yo que usabamos (y usamos) ASP Clásico 😉
Esto tambien trae la una consecuencia, que es que puede mostrar cualquier cosa, un script por ejemplo :O , asi que hay que tomarlo con pinzas.
Lo que nunca me gusto es cuando definen al control como «Reserva una ubicación en la página Web para mostrar texto estático.», porque reserva me da idea de esa ubicacion si no la utilizo quedara en blanco, pero bueno es algo que estoy divagando a estas horas de la noche…
Pero centremonos en una propiedad del webcontrol Literal: Mode, y sus valores posibles (PassThrough, Encode, Transform)
  • PassThrough:
    No se modifica el contenido del control.
    Ejemplo:
    <asp:Literal ID="ltlEjemplo_PassThrough" runat="server" 
                        Text="Que la <strong>Fuerza</strong> te acompañe. N° 123"
                        Mode="PassThrough"></asp:Literal> 

    Salida:

    Que la <strong>Fuerza</strong> te acompañe. N° 123
     
  • Encode:
    Se codifica el contenido a HTML
    Ejemplo:
  • <asp:Literal ID="ltlEjemplo_PassThrough" runat="server" 
                        Text="Que la <strong>Fuerza</strong> te acompañe. N° 123"
                        Mode="Encode"></asp:Literal> 

    Salida:

    Que la &lt;strong&gt;Fuerza&lt;/strong&gt; te acompa&#241;e. N&#176; 123
    
    

    Interesante modo cuando queremos presentar contenido HTML, y mostrando el codigo formateado, sin tener que recurrir a HttpUtility.HTMLEncode

 

 

  • Transform:
    Los elementos del lenguaje de marcado no compatibles se quitan del contenido del control.
    Al decir que no es compatible: si el explorador admite HTML o XHTML el comportamiento es identico al modo PassThrough
    Ejemplo:
  • <asp:Literal ID="ltlEjemplo_PassThrough" runat="server" 
                        Text="Que la <strong>Fuerza</strong> te acompañe. N° 123"
                        Mode="Transform"></asp:Literal> 
    Salida:
    Bueno como no tengo instalado un navegador wap para testar imaginemos que realiza lo que dice 😉
    Si por ejemplo la etiqueta encierra un contenido <EtiquetaNoValida>Contenido</EtiquetaNoValida>, este contenido se envia, pero la etiqueta no.
 El valor por default es Transform.
 
 
 

Enlaces

  • Label (Clase)
    Representa un control de etiqueta que muestra texto en una página Web.
  • Literal (Clase)
    Reserva una ubicación en la página Web para mostrar texto estático.
  • Literal.Mode (Propiedad)
    Obtiene o establece un valor de enumeración que especifica cómo se representa el contenido del control Literal.

2 comentarios sobre “[ASP.NET] Simple pero poderoso: Literal webcontrol”

  1. Hola, felicidades por tu contribución. Te pido de favor me ayudes a ejecutar una página (HTML o ASP) de manera dinámica, es decir que el nombre del archivo a ejecutar sea una cadena variable…

    gracias y espero me ayudes

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *