ASP.Net: Literal vs Label


102

Ich wollte nur einige Behörden darüber hören, wann und wo Sie eine LITERALKontrolle über a anwenden sollten LABEL.

Nach meinem Verständnis besteht der Unterschied darin, dass A LABELüber die <SPAN>hinzugefügten Tags gestaltet werden kann.

Ich persönlich finde das Hinzufügen von <SPAN>Tags in meinem HTML-Code sehr ärgerlich und wende Stile nie über ASP LITERALan. Daher sollte dies die meiste Zeit verwendet werden ... aber ich bin besorgt, dass es andere Überlegungen oder Vorteile gibt mit einem ETIKETT darüber, von dem ich nichts weiß.

Ist es 100% in Ordnung, LABELs durch LITERALs zu ersetzen , vorausgesetzt, wir wenden keine Stile auf sie an? Gibt es KEINE anderen Überlegungen?

Antworten:


126

Ja, der Hauptunterschied besteht darin, dass LiteralSteuerelemente nur Text rendern, Labelihn jedoch mit <span>Tags umgeben (es sei denn, Sie verwenden die AssociatedControlIDEigenschaft. In diesem Fall Labelrendert ein Steuerelement ein <label>Tag).

Beschriftungen können also einfacher gestaltet werden. Wenn Sie jedoch nur Text einfügen, sind Literale der richtige Weg. Literale Steuerelemente haben auch eine praktische EigenschaftMode die regelt, wie der Text gerendert wird. Sie können es HTML-codieren oder ohne Änderungen rendern lassen oder "nicht unterstützte Markup-Sprachelemente" entfernen lassen.

Wenn Sie keine Stile anwenden (z. B. mithilfe Labelder CssClassEigenschaft 's ), ist es in Ordnung, LabelSteuerelemente durch LiteralSteuerelemente zu ersetzen .


1
Also, nur um sicher zu gehen, gibt es überhaupt keine anderen Überlegungen? Ich frage, weil Sie schreiben "der Hauptunterschied ist ...". Offensichtlich interessiert mich der Hauptunterschied nicht. Vielen Dank.
Chuck Le Butt

2
@ Django: Chris Marisics Antwort ist wirklich wichtig; ASP.Net- LabelSteuerelemente sollten immer verwendet werden, wenn Sie ein HTML- <label>Element möchten . Abgesehen davon rendern Beschriftungen Text zwischen <spans>, Literale nicht und Literale geben Ihnen eine bessere Kontrolle darüber, wie der Text gerendert wird. Auf beiden Steuerelementen gibt es keine besonderen Ereignisse, und auf deren Inhalt kann im CodeBehind genauso zugegriffen werden (über die TextEigenschaft).
Graham Clark

2
CHECKBOXEN! RADIO KNÖPFE! Wenn Sie LabelSteuerelemente verwenden, können Sie das AssociatedControlIDAttribut mit der ID des Kontrollkästchens oder Optionsfelds hinzufügen, dem die Beschriftung zugeordnet ist. Auf diese Weise können Sie auf das Etikett klicken und das zugehörige Steuerelement wird aktiviert. Wenn Sie den anklickbaren Zielbereich vergrößern, wird auch die Benutzeroberfläche einfacher zu verwenden.
Harry Pehkonen

34

Wenn Sie Code ähnlich wie haben

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

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

Es ist optimal, ein Label-Element zu verwenden, da es es korrekt in ein HTML- labelElement mit dem richtigen Element umwandeltfor Attribut umgewandelt wird, das auf Ihr Textfeld abzielt. Wenn ein Benutzer auf die Beschriftung klickt, setzt er seinen Cursor automatisch in das Textfeld.

Verwenden Sie andernfalls das Literal, es sei denn, der Text in a eingeschlossen zu sein, spanwäre für das CSS-Styling von Vorteil.


19

Geben Sie hier die Bildbeschreibung ein

Um einfachen Text, formatierten Text oder HTML-Text so anzuzeigen, wie er ist, beginne ich zuerst mit dem Literal als Leichtgewicht und gebe keine zusätzlichen SPAN-Tags aus.

Sehen Sie sich dieses Video an, das diese zusätzlichen Tags demonstriert.

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

Es ist auch traurig zu sehen, dass viele ASP.NET Webform-Leute standardmäßig Beschriftung auswählen, um Text anzuzeigen, ohne zu wissen, dass zusätzliche SPAN-Tags generiert werden, die Ihren HTML-Code schwer machen können, wenn Sie viele Beschriftungen haben.


3

Unterschied s / w Label und Literal Control in asp.net

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

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

Zum Beispiel das folgende HTML

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

Wird als gerendert

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

Ein Literal-Steuerelement gibt keine umgebenden Tags aus, daher wird der Text wie folgt angezeigt:

Zum Beispiel das folgende HTML

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

wird gerendert als

Literal Control Text

Wenn Sie also Stile auf ein Steuerelement anwenden möchten, verwenden Sie das Steuerelement Literal. Aus diesem Grund ist die Literal-Steuerung im Vergleich zur Label-Steuerung eine leichte Steuerung.

Zu Ihrer Information: Die Vererbungshierarchie für die Literal-Steuerungsklasse lautet (Object => Control => Literal) , wobei für das Label-Steuerelement die Hierarchie lautet (Object => Control => WebControl => Label).


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.