2010-07-18 3 views
17

Che cos'è un LiteralControl? Stavo leggendo su LiteralContols ma non sono sicuro del perché sono usati. Ho usato questo codice per elencare i controlli in una pagina e - Ho una pagina che ha un'etichetta e un pulsante. Quando uso questoChe cos'è LiteralControl? Perché viene usato?

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 />")); 
    } 
} 

trovo che ci sono in realtà LiteralControls che vengono generati ed elencato prima e dopo ogni controllo ho aggiunto alla mia pagina. Anche i controlli letterali hanno solo proprietà text.

Non sono ancora sicuro del motivo per cui sono necessari e utilizzati LiteralControls? Perché viene utilizzato lo LiteralControls? Perché i controlli che aggiungo alla mia pagina hanno un LiteralControl posizionato prima e dopo? E perché hanno solo proprietà Text?

+0

per essere precisi, si accettano anche * ID * e * runat = "server" *. –

risposta

12

Da MSDN Il controllo letterale rappresenta elementi HTML, testo e qualsiasi altra stringa in una pagina ASP.NET che non richiede l'elaborazione sul server.

hanno anche uno sguardo a questo per Literal Control usage

Un label rende un tag <span>. Consente di modificare a livello di codice le caratteristiche di visualizzazione di di alcuni testi che si desidera visualizzare. A LiteralControl rappresenta esattamente l'HTML statico che desideri. Non c'è il vantaggio generale di di utilizzarne uno sull'altro. Uno può essere più utile di un altro in determinate circostanze. Ad esempio, se si desidera visualizzare il testo statico, e non apportare modifiche programmatiche, è possibile che si desideri utilizzare un controllo letterale .

+7

link builderau.com.au guasto. – JerryOL

3

Otterrete un LiteralControl per qualsiasi markup HTML che non fa parte di un controllo server ASP.NET. È proprio come il framework rende l'arbusto HTML della tua pagina. La proprietà Text è solo questo HTML, che include anche spazi bianchi.

12

A LiteralControl viene utilizzato per iniettare HTML nella pagina in fase di esecuzione.

5

Molti programmatori che non comprendono il valore del markup semantico (in particolare quelli con uno sfondo di Windows Form principalmente) utilizzeranno un controllo Label o il tag HTML LABEL come segnaposto per il testo generato in modo programmatico su una pagina. Lo svantaggio di questo è che Label ha un significato semantico in un documento HTML.

L'utilizzo di un valore letterale fornisce un controllo con un attributo ID a cui aggancio, consentendo al tempo stesso di iniettare markup semanticamente corretto attorno ad esso.

Inoltre, se si finisce per non inviare alcun testo a un tag LABEL, verrà comunque emesso il tag nel codice HTML, ad esempio: <label></label>, mentre un valore Letterale senza testo non produrrà nulla, molto più pulito.

0

Quello che ho fatto in una applicazione Web è stato agganciare i controlli definiti nella pagina literal alla pagina per aggiungere testo in fase di runtime. Un controllo literal non crea alcun markup a parte, ma renderà felicemente qualsiasi codice HTML fornito alla proprietà Text, proprio come il testo non elaborato.

+1

conosci la differenza di 'Literal' e' LiteralControl'? Perché la domanda riguarda about LiteralControl'. –

0

Prova questo:

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

Si prega di non pubblicare solo un mucchio di codice senza una spiegazione su come aiuta a rispondere alla domanda degli utenti. (Puoi modificare il tuo post per aggiungere una spiegazione.) – Loren