2010-07-18 1 views
17

¿Qué es un LiteralControl? Estaba leyendo sobre LiteralContols pero no estoy seguro de por qué se usan. Utilicé este código para enumerar los controles en una página y - Tengo una página que tiene una etiqueta y un botón. Cuando utilizo este¿Qué es LiteralControl? ¿Por qué se usa?

foreach (Control control in Page.Controls) 
{ 
    Response.Write(control.GetType().ToString() + " - <b> " + control.ID + "</b><br />");  

    if (control is LiteralControl) 
    { 
     Response.Write("Textt :" + ((LiteralControl)control).Text.ToString() + " - " + 
      Server.HtmlEncode(((LiteralControl)control).Text + "<br />")); 
    } 
} 

Me parece que en realidad hay LiteralControls que se genera y aparece antes y después de cada control de He añadido a mi página. Los controles literales también tienen solo propiedad de texto.

todavía no estoy seguro de por qué LiteralControls se necesitan y utilizan? ¿Por qué se usan LiteralControls? ¿Por qué los controles que agrego a mi página tienen un LiteralControl colocado antes y después? ¿Y por qué solo tienen Text Property?

+0

Para ser más precisos, también aceptan * Identificación * * y runat = "server" *. –

Respuesta

12

De MSDN Literal Control representa elementos HTML, texto y cualquier otra cadena en una página ASP.NET que no requiere procesamiento en el servidor.

también echar un vistazo a esto para Literal Control usage

Un label hace que una etiqueta <span>. Le permite cambiar por programación las características de visualización de algunos textos que desea visualizar. A LiteralControl representa exactamente el HTML estático que desee. No hay una ventaja general de de usar una sobre la otra. Uno puede ser más útil que otro en ciertas circunstancias. Por ejemplo, si desea mostrar texto estático, y no hacer cambios programáticos a él, es posible que desee utilizar un LiteralControl.

+7

builderau.com.au enlace muerto. – JerryOL

3

Usted recibirá una LiteralControl para cualquier formato HTML que no es parte de un control de servidor ASP.NET. Es solo cómo el marco representa los arbustos HTML de su página. La propiedad Text es solo este HTML, que también incluye cualquier espacio en blanco.

12

Un LiteralControl se utiliza para inyectar HTML en su página en tiempo de ejecución.

5

Muchos programadores que no entienden el valor del marcado semántico (especialmente aquellos con un fondo de Windows Forms) usarán un control Label o la etiqueta HTML LABEL como marcador de posición para texto generado mediante programación en una página. La desventaja de esto es que Label tiene un significado semántico en un documento HTML.

Usando un literal le da un control con un atributo ID para enganchar a, al tiempo que permite que se inyecte marcado semánticamente correcta alrededor de ella.

Además, si termina por no presionar ningún texto en una etiqueta LABEL, igual saldrá la etiqueta en su HTML, como por ejemplo: <label></label>, mientras que un Literal sin texto no generará nada, mucho más limpio.

0

Lo que hice en una aplicación web fue a enganchar en literal controles definidos en la página para añadir texto en tiempo de ejecución. Un control literal no crea marcas propias, pero con mucho gusto renderizará cualquier HTML que proporcione a la propiedad Text, al igual que el texto sin formato.

+1

¿conoces la diferencia entre 'Literal' y' LiteralControl'? Porque la pregunta es sobre 'LiteralControl'. –

0

Prueba esto:

foreach (Control control in Page.Controls) 
{ 
    Response.Write(control.GetType().ToString() + " - <b> " + control.ID + "</b><br />");  

    if (control is LiteralControl) 
    { 
     Response.Write("Textt :" + ((LiteralControl)control).Text.ToString() + " - " + 
     Server.HtmlEncode(((LiteralControl)control).Text + "<br />")); 
    } 
} 
0
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { } 
    protected void btnGenerateControl_Click(object sender, EventArgs e) 
    { 
    // Retrieve the count of the controls to generate 
    int Count = Convert.ToInt16(txtControlsCount.Text); 
    // Loop thru each list item in the CheckBoxList 
    foreach (ListItem li in chkBoxListControlType.Items) 
    { 
     if (li.Selected) 
     { 
      // Generate Lable Controls 
      if (li.Value == "Label") 
      { 
       for (int i = 1; i <= Count; i++) 
       { 
        Label lbl = new Label(); 
        lbl.Text = "Label - " + i.ToString() + "<br>"; 
        //phLabels.Controls.Add(lbl); 
        //tdLabels.Controls.Add(lbl); 
        pnlLabels.Controls.Add(lbl); 
       } 
      } 
      // Generate TextBox controls 
      else if (li.Value == "TextBox") 
      { 
       for (int i = 1; i <= Count; i++) 
       { 
        TextBox txtBox = new TextBox(); 
        txtBox.Text = "TextBox - " + i.ToString() ;     
        //phTextBoxes.Controls.Add(txtBox); 
        //tdTextBoxes.Controls.Add(txtBox); 

        pnlTextBoxes.Controls.Add(txtBox); 
        pnlTextBoxes.Controls.Add(new LiteralControl("<br />")); 
        //pnlTextBoxes     
       } 
      } 
      // Generate Button Controls 
      else 
      { 
       for (int i = 1; i <= Count; i++) 
       { 
        Button btn = new Button(); 
        btn.Text = "Button - " + i.ToString(); 
        //phButtons.Controls.Add(btn); 
        //tdButtons.Controls.Add(btn); 

        pnlButtons.Controls.Add(btn); 
        pnlButtons.Controls.Add(new LiteralControl("<br />")); 
       } 
      } 
     } 
    } 
    } 
} 
+0

No publique solo un montón de código sin una explicación de cómo ayuda a responder la pregunta de los usuarios. (Puede editar su publicación para agregar una explicación). – Loren

Cuestiones relacionadas