Pourquoi ne puis-je régler l'asp:le Texte de l'Étiquette de la propriété par l'appel d'une méthode dans le fichier aspx?
Quelqu'un peut-il m'expliquer ce à moi:
J'ai une étiquette et je veux être en mesure de définir la propriété Text en appelant une méthode dans le fichier aspx. Il fonctionne très bien si je l'ai mis à la propriété dans le code derrière, mais j'ai vraiment envie de définir cette propriété dans le fichier aspx.
J'ai essayé plusieurs choses, mais ce que j'attend de travail était le suivant:
<asp:Label ID="Label1" runat="server" Text=<%# GetMyText("LabelText") %> />
Je n'obtiens pas d'erreurs lors de cette opération, mais ma méthode n'est jamais appelé et la propriété de Texte est vide.
Est-il pas possible de définir des valeurs de propriété à côté serveur contrôles directement dans le aspx sans en utilisant des ressources ou de l'utilisation de valeurs codées?
Mise à jour: Mon premier essai était:
<asp:Label ID="Label1" runat="server" Text=<%= GetMyText("LabelText") %> />
Mais que les résultats dans l'erreur suivante:
Serveur ne peut pas contenir de balises <% ... %> constructions.
OriginalL'auteur GAT | 2009-10-07
Vous devez vous connecter pour publier un commentaire.
La syntaxe =<%# ... %> est syntaxe de liaison de Données utilisé pour lier les valeurs de propriétés de contrôle lorsque la méthode DataBind est appelée.
Vous devez appeler DataBind - soit la Page.DataBind pour lier tous les contrôles sur votre page ou Label1.DataBind() pour lier juste l'étiquette. E. g. ajoutez les lignes suivantes à votre gestionnaire d'événements Page_Load:
À l'aide de Texte='<%= GetMyText("LabelText") %> " comme d'autres l'ont proposé ne fonctionne pas comme vous allez le découvrir. Cette syntaxe est héritée de l'ASP classique. Il peut être utilisé dans certaines circonstances, en ASP.NET pour l'insertion de valeurs dynamiques en HTML statique, mais ne peut pas être utilisée pour définir des propriétés de contrôles serveur.
OriginalL'auteur Joe
La sysntax vous êtes à la recherche pour est
<%= %>
la#
est pour la liaison de données. Ainsi, votre code doit se lire:EDIT: Ce answere est incrrect
Je quitte cette réponse ici, car beaucoup de personnes sont d'accord avec moi que c'est en effet la bonne réponse, mais il ne fonctionnera pas. Cette ligne de code va produire le code HTML suivant de sortie:
C'était aussi ma première pensée. Mais si j'utilise le "<%=" syntaxe j'obtiens l'erreur suivante: le Serveur ne peut pas contenir de balises <% ... %> constructions.
+1. Me battre pour elle, mais à l'extérieur des guillemets doivent être entre guillemets simples. comme dans le Texte='<%= GetMyText("LabelText") %>'
Êtes-vous à l'aide des guillemets ou des apostrophes? ou du tout? Essayez tous les trois, comme ils l'ont tous plus ou moins été suggéré.
Édité réponse à tenir compte de cela. Merci David
OriginalL'auteur Geoff
Essayez ceci:
Modifier
Yep. J'ai eu tort. @Joe avait raison.
Toutefois, CELA fonctionne (et je ne suis pas sûr de ce que la différence est):
Le code-behind:
Que c'est drôle. Je l'utilise tout le temps. Sauf si la question est formulée de manière incorrecte, ce n'est pas une situation de liaison de données.
J'ai copié votre échantillon ci-dessus dans un fichier aspx, et le HTML résultant est "<span id="Label1"><%= GetMyText("LabelText") %></span>" - c'est à dire la chaîne de caractères "<%= GetMyText("LabelText") %>" a été utilisé comme la propriété text. Si vous l'utilisez tout le temps, vous devez faire quelque chose de subtilement différent et je serais intéressé de voir ce que.
OK. J'ai le sentiment que je vais être vraiment gêné quand j'arrive au travail pour vérifier mon code. Merci, Joe. Je vais revenir ici et humblement m'excuse si mon code est différent. Je vais aussi poster le code que j'ai réellement l'utiliser si elle est différente. Je parie qu'il fait. En tout cas, votre réponse a travaillé pour lui, donc je suis viting.
"Je ne suis pas sûr de ce que la différence est" - vous pouvez mettre du HTML entre le début et la fin des balises du Label de contrôle - dans ce cas, il sera rendu lieu de la propriété Text. Et ce HTML peut contenir le classique ASP "<% =Valeur %>" ou "<% de réponses.Écrire(Valeur) %>". Dans ce cas, le code est exécuté lors de la phase de Rendu.
OriginalL'auteur David