2010-07-22 11 views
87

Ich wollte nur einige Behörden auf, wann und wo Sie eine LITERAL Kontrolle über eine LABEL verwenden sollten.ASP.Net: Literal vs Label

Wie ich es verstehe, ist der Unterschied: A LABEL kann über die <SPAN> Tags, die hinzugefügt werden, gestylt werden.

Ich persönlich finde die Zugabe von <SPAN> Tags in meinem HTML zu sehr nervig sein und nie tatsächlich Stile durch ASP anwenden, und so scheinen LITERAL s, was sollte die meiste Zeit verwendet werden ... aber ich bin besorgt Es gibt andere Überlegungen oder Vorteile, ein LABEL darüber zu verwenden, von denen ich nichts achte.

Ist es 100% in Ordnung, alle LABEL s durch LITERAL s zu ersetzen, vorausgesetzt, wir verwenden keine Stile? Gibt es KEINE anderen Überlegungen?

Antwort

114

Yep, ist der wesentliche Unterschied, dass Literal Kontrollen rendern nur Text, sondern Label Kontrollen umgeben es mit <span> Tags (sofern Sie die AssociatedControlID Eigenschaft verwenden, wobei in diesem Fall eine Label Steuerung einen <label> Render-Tag).

So können Etiketten leichter gestylt werden, aber wenn Sie nur Text einfügen, sind Literale der richtige Weg. Literale Steuerelemente haben auch eine handliche Eigenschaft Mode, die regelt, wie der Text gerendert wird. Sie können HTML-codiert oder ohne Änderungen gerendert lassen oder "nicht unterstützte Markup-Sprachelemente" entfernen.

Wenn Sie nicht alle mögliche Arten der Anwendung (beispielsweise durch Label mit ‚s CssClass Eigenschaft), wird es in Ordnung sein Label Kontrollen mit Literal Kontrollen zu ersetzen.

+1

Also, nur um sicher zu sein, gibt es KEINE anderen Überlegungen? Ich frage, weil du schreibst "der Hauptunterschied ist ...". Offensichtlich interessiert mich nicht der Hauptunterschied. Vielen Dank. –

+2

@Django: Chris Marisic's Antwort ist wirklich wichtig; ASP.Net-'Label'-Steuerelemente sollten immer verwendet werden, wenn Sie ein HTML-Element'

+0

Wunderbar! Das erklärt, warum es Label heißt. Danke vielmals! –

32

Wenn Sie Code ähnlich

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

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

Optimal ist es, ein Label-Element zu verwenden, weil es richtig es in ein HTML label Element mit dem richtigen for Attribute drehen wird Ihr Textfeld Targeting, so dass, wenn ein Der Benutzer klickt auf das Label und setzt den Cursor automatisch in das Textfeld.

Andernfalls verwenden Sie das Literal, es sei denn, den Text in eine span eingewickelt würde für css Styling vorteilhaft sein.

+1

Noch ein toller Tipp, von dem ich nicht wusste. Vielen Dank! –

+2

Ja, das ist der Hauptgrund, warum ich Etiketten selbst benutze, bietet eine etwas nettere Benutzererfahrung. –

+2

Absolut. Ich habe mich immer gefragt, wie ich dieses bisschen HTML in ASP.Net replizieren kann. Ich bin so froh, dass ich es endlich verstanden habe. –

12

enter image description here

Zum einfachen Text, formatierten Text oder HTML-Text angezeigt werden, wie es i beginnt mit wörtlichen zunächst als sein geringes Gewicht und zusätzliche emittieren nicht aus SPAN-Tags.

Siehe this video, die über diese zusätzlichen Tags zeigt.

Aber wir können CSS nicht auf ein Literal anwenden, wir können Attribute wie Label1.Attributes.Add nicht zu einem Literal hinzufügen. Container-orientierte Dinge können nicht erreicht werden, da das Literal nicht von einem SPAN-Tag umgeben ist.

Es ist auch traurig zu sehen, viele ASP.NET Webform Kerle standardmäßig wählen Sie Label, um Text anzuzeigen, nicht zu wissen, dass es zusätzliche SPAN-Tags generiert, die Ihren HTML schwer machen können, wenn Sie viel von Label haben.

1

Difference b/w Etiketten- und Literal-Steuerelement in asp.net

In fast jeder Hinsicht ein Literal-Steuerelement ist das gleiche wie ein Label-Steuerelement. Beide Steuerelemente werden verwendet, um Text in einem Webformular anzuzeigen. (Die Eigenschaft Text kann im HTML oder im Code-Behind festgelegt werden.)

Der größte Unterschied besteht darin, dass das Label-Steuerelement den Text in einem span beim Rendern umschließt. Jeder Stil, der auf das Label-Steuerelement angewendet wird, wird mit der style-Eigenschaft von span gerendert.

Zum Beispiel die folgende HTML

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

Wird als

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

Eine Literal-Steuerelement alle umliegenden Tags keine Ausgabe gemacht werden, so wird der Text angezeigt, wie ist :

Zum Beispiel das folgende HTML

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

als

Literal Control Text

So gerendert werden, wenn Sie verwenden, um alle Arten an eine als Kontrolle anwenden möchten Verwendung Etikett sonst die Literal-Steuerelement. Aus diesem Grund ist die Literal-Steuerung im Vergleich zur Label-Steuerung eine leichte Gewichtskontrolle.

FYI: Die Vererbungshierarchie für Literal Steuerungsklasse ist (Object => Kontroll => Literal), wo, wie für das Label-Steuerelement, die Hierarchie (Object => Kontroll => WebControl => Label)