2009-06-12 6 views
1

Quelle est la différence entre ce qui suit?Avez-vous vraiment besoin d'un attribut Text dans un label ASP.NET?

<asp:Label runat="server">Hello World</asp:Label> 

<asp:Label runat="server" Text="Hello World"></asp:Label> 

mise à jour:

S'ils sont exactement les mêmes alors pourquoi

<asp:Label ID="Label1" runat="server"> 
There were <%#transactionCount%> transactions today 
</asp:Label> 

se lient correctement lorsque vous utilisez la liaison de données à valeur unique et affiche la valeur correcte pour TransactionCount, tandis que ...

<asp:Label ID="Label1" runat="server" Text="There were <%#transactionCount%> transactions today"> 
</asp:Label> 

n'affiche pas de valeur pour transactionCount dans la page?


ENCORE À JOUR:

Je comprends les points soulevés sur l'utilisation des commandes littérales. Je vais gifler mon visage en conséquence - mais cela ne résout toujours pas le problème - même si je me rapproche peut-être d'une solution.

Si je ...

<asp:Literal ID="Label1" runat="server" Text="<%#transactionCount%>"></asp:Literal> 

... Je vois la valeur de TransactionCount apparaissent dans la page Web. D'autre part, si je place un caractère ou un mot devant le champ de liaison de données à valeur unique, par exemple.

<asp:Literal ID="Label1" runat="server" Text="No. <%#transactionCount%>"></asp:Literal> 

... transactionCount n'apparaît pas.

+1

Ils sont les mêmes Joe. L'analyseur les traite de la même manière. –

+0

Vous devriez vraiment utiliser un littéral pour cela - comme le dit une autre affiche, les étiquettes sont pour les champs de formulaire d'étiquetage. Ce n'est pas sémantiquement correct dans le contexte que vous fournissez. –

Répondre

4

Ils rendront la même chose dans votre code HTML final. Cependant, l'attribut Text est utile pour paramétrer par programme le texte affiché dans votre code.

+0

..et ajoute de la cohérence avec le reste des contrôles serveur –

+0

Merci pour la réponse - mais je ne trouve pas qu'ils fonctionnent la même chose pour la liaison de données à valeur unique. J'ai mis à jour ma question ci-dessus – Joe

2

Oui, en dehors de la satisfaction de l'interface ITextControl. Rappelez-vous que 99% des développeurs utilisent Labels mauvais - un devrait généralement utiliser Literals pour maintenir la sortie, si ce n'est juste <%# Databind() %>. Vous n'avez pas besoin d'une plage côté serveur pour la plupart des choses.

où l'on doit utiliser une étiquette est de créer un champ d'étiquette dans votre formulaire:

<asp:Label runat="server" id="LabelForFirstName" Text="First Name:" AssociatedControlID="firstname /> 
<asp:TextBox runat="server" id="FirstName" /> 

on donne une étiquette liée à la première balise de nom et sémantiquement correct HTML.

0

Si vous définissez le texte en tant que Hello World, vous ne pouvez pas modifier sa valeur de manière progamatically à partir de votre fichier code-bhind.

considérant que, woukd vous permettent de modifier la valeur mytxt.Text = « Nouveau texte »

Mais ils seront rendus de la même façon.

0

Une autre raison pour laquelle ils sont différents est de prendre en charge implicit localization. Dans le fichier de ressources, spécifiez ID.Property (c'est-à-dire Label1.Text).

Questions connexes