106 votes

ASP.Net : Littéral vs Étiquette

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

Si je comprends bien, la différence est la suivante : A LABEL peuvent être stylisés par l'intermédiaire du <SPAN> qui sont ajoutés.

Je trouve personnellement que l'ajout de <SPAN> dans mon HTML pour être très ennuyeux et ne jamais appliquer les styles via ASP, et donc LITERAL semblent être ce qui devrait être utilisé la plupart du temps... mais je suis préoccupé par le fait qu'il y a autre Je n'ai pas connaissance de considérations ou d'avantages liés à l'utilisation d'une étiquette par-dessus.

Est-il possible de remplacer à 100% les LABEL s avec LITERAL à condition que nous ne leur appliquions pas de styles ? N'y a-t-il pas d'autres considérations ?

131voto

Graham Clark Points 9038

Oui, la principale différence est que Literal ne font que rendre du texte, mais Label les commandes l'entourent de <span> (sauf si vous utilisez la balise AssociatedControlID dans ce cas, un Label rendra un <label> tag).

Ainsi, les étiquettes peuvent être stylisées plus facilement, mais si vous voulez simplement insérer du texte, les littéraux sont la solution. Les contrôles littéraux possèdent également une propriété très pratique Mode qui régit la façon dont le texte est rendu. Vous pouvez le coder en HTML, le rendre sans aucune modification ou supprimer les "éléments non pris en charge par le langage de balisage".

Si vous n'appliquez aucun style (par exemple en utilisant Label 's CssClass ), il sera possible de remplacer Label contrôles avec Literal contrôles.

1 votes

Donc, juste pour être sûr, il n'y a aucune autre considération ? Je demande parce que vous écrivez "la principale différence est...". De toute évidence, je ne suis pas intéressé par la principale différence. Merci.

2 votes

@Django : La réponse de Chris Marisic est vraiment importante ; ASP.Net Label doit toujours être utilisé lorsque vous voulez un contrôle HTML <label> élément. En outre, les étiquettes rendent le texte entre les éléments suivants <spans> Les littéraux ne le font pas, et les littéraux vous donnent un plus grand contrôle sur la façon dont le texte est rendu. Il n'y a pas d'événements spéciaux pour ces deux contrôles, et leur contenu est accessible dans le code-behind exactement de la même manière (par le biais de la balise Text propriété).

2 votes

CHECKBOXES ! BUTTONS RADIO ! Si vous utilisez Label vous pouvez ajouter l'élément AssociatedControlID avec l'ID de la case à cocher ou du bouton radio auquel l'étiquette est associée. De cette façon, vous pouvez cliquer sur l'étiquette, et le contrôle associé sera activé. L'agrandissement de la zone cible cliquable rendra également l'interface utilisateur plus facile à utiliser.

35voto

Chris Marisic Points 11495

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 html label avec le bon élément for ciblant votre zone de texte, de sorte que si un utilisateur clique sur l'étiquette, il place automatiquement son curseur à l'intérieur du champ de texte.

Sinon, utilisez le littéral, à moins que le texte ne soit enveloppé dans une balise span serait bénéfique pour le style css.

19voto

Shivprasad Koirala Points 1327

enter image description here

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

Ver cette vidéo qui démontre l'existence de ces balises supplémentaires.

Mais nous ne pouvons pas appliquer de CSS sur un littéral, nous ne pouvons pas ajouter d'attributs comme Label1.Attributes.Add à un littéral. Il n'est pas possible de réaliser des choses orientées vers le conteneur car le littéral n'est pas entouré d'une balise SPAN.

Il est également triste de constater que de nombreux utilisateurs de formulaires Web ASP.NET choisissent par défaut les étiquettes pour afficher le texte sans savoir que cela génère des balises SPAN supplémentaires qui peuvent alourdir votre HTML si vous avez beaucoup d'étiquettes.

3voto

Rae Lee Points 1111

Différence entre l'étiquette et le contrôle littéral en asp.net

Dans presque tous les cas, un contrôle littéral est identique à un contrôle d'étiquette. Ces deux contrôles sont utilisés pour afficher du texte sur un formulaire Web. (La propriété Text peut être définie dans le HTML ou dans le code-behind).

La principale différence réside dans le fait que le contrôle Label enveloppe le texte dans un cadre span lorsqu'il est rendu. Tout style appliqué au contrôle de l'étiquette sera rendu à l'aide de l'attribut style de l 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 par

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

Un contrôle littéral ne produit pas de balises environnantes, 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

Ainsi, si vous voulez appliquer des styles à une étiquette, utilisez le contrôle Label, sinon utilisez le contrôle Literal. Pour cette raison, le contrôle Literal est un contrôle léger, comparé au contrôle Label.

Pour info : la hiérarchie d'héritage de la classe de contrôle Literal est la suivante (Objet => Contrôle => Littéral) alors que pour le contrôle des étiquettes, la hiérarchie est la suivante (Objet => Contrôle => WebControl=> Label)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X