2010-07-18 9 views
17

Was ist ein LiteralControl? Ich habe über LiteralContols gelesen, aber ich bin nicht sicher, warum sie verwendet werden. Ich benutzte diesen Code, um die Steuerelemente in einer Seite aufzulisten und - Ich habe eine Seite, die eine Beschriftung und eine Schaltfläche hat. Als ich diese verwendenWas ist LiteralControl? Warum wird es benutzt?

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

ich feststellen, dass es tatsächlich LiteralControls sind, die erzeugt werden und aufgelistet vor und nach jeder Kontrolle ich auf meiner Seite hinzugefügt haben. Literalsteuerelemente haben auch nur eine Texteigenschaft.

Ich bin mir immer noch nicht sicher, warum LiteralControls benötigt und verwendet werden? Warum werden LiteralControls verwendet? Warum wird bei Steuerelementen, die ich meiner Seite hinzufüge, ein LiteralControl davor und danach platziert? Und warum haben sie nur Text Property?

+0

Um genau zu sein, sie auch * ID akzeptieren * und * runat = "server" *. –

Antwort

12

Von MSDN Literal Control stellt HTML-Elemente, Text und alle anderen Zeichenfolgen in einer ASP.NET-Seite dar, die keine Verarbeitung auf dem Server erfordern.

haben auch einen Blick auf diese für Literal Control usage

A label macht einen <span>-Tag. Sie können damit die Anzeigeeigenschaften eines bestimmten Textes, den Sie anzeigen möchten, programmgesteuert ändern ( ). Ein LiteralControl macht genau das statische HTML, das Sie wollen. Es gibt keinen allgemeinen Vorteil, einen über dem anderen zu verwenden. Unter Umständen kann es sinnvoller sein als ein anderes . Wenn Sie beispielsweise den statischen Text anzeigen und keine programmatischen Änderungen daran vornehmen möchten, möchten Sie möglicherweise einen LiteralControl verwenden.

+7

builderau.com.au link tot. – JerryOL

3

Sie erhalten eine LiteralControl für jedes HTML-Markup, das nicht Teil eines ASP.NET-Serversteuerelements ist. Es ist nur, wie das Framework das HTML-Gebüsch Ihrer Seite rendert. Die -Eigenschaft ist nur dieser HTML-Code, der auch Leerzeichen enthält.

12

Ein LiteralControl wird verwendet, um HTML zur Laufzeit in Ihre Seite einzufügen.

5

Viele Programmierer, die den Wert des semantischen Markups nicht verstehen (insbesondere solche mit primärem Windows Forms-Hintergrund), verwenden ein Label-Steuerelement oder das HTML LABEL-Tag als Platzhalter für programmatisch generierten Text auf einer Seite. Der Nachteil dabei ist, dass Label eine semantische Bedeutung in einem HTML-Dokument hat.

Wenn Sie ein Literal verwenden, erhalten Sie ein Steuerelement mit einem ID-Attribut, auf das Sie haken können, während Sie semantisch korrekte Markups um es herum einfügen können.

Wenn Sie schließlich keinen Text an ein LABEL-Tag senden, wird das Tag trotzdem in Ihrem HTML ausgegeben: <label></label>, während ein Literal ohne Text nichts ausgibt - viel sauberer.

0

Was ich in einer Webanwendung getan habe, war, in definierte literal Steuerelemente auf der Seite einzuhängen, um Text zur Laufzeit hinzuzufügen. Ein Steuerelement literal erzeugt kein eigenes Markup, aber rendert jeden HTML-Code, den Sie der Text-Eigenschaft bereitstellen, genauso gut wie reinen Text.

+1

Kennen Sie den Unterschied zwischen 'Literal' und' LiteralControl'? Weil die Frage über 'LiteralControl' steht. –

0

Try this:

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

Bitte poste nicht nur eine Menge Code ohne eine Erklärung, wie es hilft, die Frage des Benutzers zu beantworten. (Sie können Ihren Beitrag bearbeiten, um eine Erläuterung hinzuzufügen.) – Loren

Verwandte Themen