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 LITERAL
s 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 LABEL
s par les LITERAL
s, à condition de ne pas leur appliquer de styles? N'y a-t-il AUCUNE autre considération?
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
.
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.
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.
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)