web-dev-qa-db-fra.com

ASP.Net: Literal vs Label

Je voulais juste entendre certaines autorités sur quand et où vous devriez utiliser un contrôle LITERAL sur un LABEL.

Si je comprends bien, la différence est la suivante: Un LABEL peut être appelé via le <SPAN> balises qui sont ajoutées.

Je trouve personnellement l'addition de <SPAN> Les balises _ dans mon code HTML sont très ennuyantes et n’appliquent jamais réellement de styles via ASP, et donc LITERALs semble être ce qui devrait être utilisé la plupart du temps ... mais je crains qu’il n’y ait autres considérations ou avantages liés à l'utilisation d'un LABEL par dessus, dont je ne suis pas au courant.

Est-il correct à 100% de remplacer les LABELs par les LITERALs, à condition de ne pas leur appliquer de styles? N'y a-t-il AUCUNE autre considération?

98
Chuck Le Butt

Oui, la principale différence est que les contrôles Literal rendent simplement le texte, mais les contrôles Label l'entourent de balises <span> (Sauf si vous utilisez la propriété AssociatedControlID, auquel cas un contrôle Label rendra une balise <label>).

Ainsi, les étiquettes peuvent être stylées plus facilement, mais si vous insérez du texte, les littéraux sont la solution. Les contrôles littéraux ont également une propriété pratique Mode qui régit le rendu du texte. Vous pouvez le coder au format HTML, ou le restituer sans aucune modification, ou supprimer tout "élément de langage de balisage non pris en charge".

Si vous n'appliquez aucun style (par exemple, en utilisant la propriété Label de CssClass), il sera judicieux de remplacer les contrôles Label par des contrôles Literal.

123
Graham Clark

Lorsque vous avez un code similaire à

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

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

Il est optimal d'utiliser un élément label car il le transformera correctement en un élément html label avec l'attribut correct for ciblant votre zone de texte, de sorte que si un utilisateur clique sur l'étiquette, il le fait automatiquement. place leur curseur à l'intérieur du champ de texte.

Sinon, utilisez le littéral à moins que le texte soit placé dans un span serait bénéfique pour le style CSS.

33
Chris Marisic

enter image description here

Pour afficher du texte simple, du texte formaté ou du texte HTML en l'état, je commencerai par le littéral, qui est léger et n'émet pas de balises SPAN supplémentaires.

Voir cette vidéo qui illustre ces balises supplémentaires.

Mais nous ne pouvons pas appliquer CSS sur un littéral, nous ne pouvons pas ajouter d'attributs tels que Label1.Attributes.Add à un littéral. Tout ce qui est orienté conteneur ne peut pas être réalisé car le littéral n'est pas entouré d'une balise SPAN.

Il est également triste de voir beaucoup de gars de Webform ASP.NET par défaut choisir l'étiquette pour afficher le texte sans savoir qu'il génère des balises SPAN supplémentaires qui peuvent alourdir le code HTML si vous avez beaucoup d'étiquettes.

19
Shivprasad Koirala

différence b/w étiquette et contrôle littéral dans asp.net

À presque tous les égards, un contrôle Literal est identique à un contrôle Label. Ces deux commandes permettent d’afficher du texte sur un formulaire Web. (La propriété Text peut être définie dans le code HTML ou dans le code-behind.)

La plus grande différence est que le contrôle Label encapsule le texte dans un span lors du rendu. Tout style appliqué au contrôle Label sera rendu à l'aide de la propriété style de span.

Par exemple, le code HTML suivant

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

Sera rendu comme

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

Un contrôle Literal ne génère aucune balise environnante. Le texte est donc affiché tel quel:

Par exemple, le code HTML suivant

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

sera rendu comme

Literal Control Text

Par conséquent, si vous souhaitez appliquer des styles à un contrôle utilisant le libellé, utilisez le contrôle Literal. De ce fait, le contrôle Literal est un contrôle léger, comparé au contrôle Label.

FYI: La hiérarchie d’héritage pour la classe de contrôle Literal est (Object => Control => Literal), où, comme pour le contrôle Label, la hiérarchie est (Object => Control => WebControl = > Label)

2
Rae Lee