Cela marche:
<span value="<%= this.Text %>" />
Cela ne fonctionne pas:
<asp:Label Text="<%= this.Text %>" runat="server" />
Pourquoi donc?
Comment puis-je faire fonctionner correctement le deuxième cas, c'est-à-dire définir le texte de l'étiquette à la valeur de la variable "Texte"?
Je ne sais pas comment le marquer comme tel, mais c'est un peu un doublon. Voir ce fil .
Je ne pense pas que l'intégration de code dans votre balisage rendra votre balisage plus clair ou plus élégant.
Utilisez expressions de liaison de données
<asp:Label ID="Label1" runat="server" Text="<%# DateTime.Now %>" ></asp:Label>
Code derrière,
protected void Page_Load(object sender, EventArgs e){
DataBind();
}
tu peux le faire
<asp:Label ID="Label1" runat="server" ><%= variable%></asp:Label>
Dans mon code, j'utilise facilement quelque chose comme ça, mais dans le contrôle de databound comme le modèle d'élément ListView
<asp:HyperLink ID="EditAction" class="actionLinks" Visible='<%#Eval("IsTrue").ToString() != "True"%>' runat="server" NavigateUrl='<%# Eval("ContentId","/articles/edit.aspx?articleid={0}")%>' />
Mais quand j'ai essayé d'utiliser en dehors du contrôle de databound en utilisant <% # ..%>, cela ne fonctionne tout simplement pas.
Vous pouvez facilement faire avec
<a href="<%=myHref%>">My href</a>
Mais pour les contrôles serveur et en dehors du contrôle de databound. Nous devons appeler DataBind () dans l'événement pageload explicitement
<asp:Hyperlink ID="aa" NavigateUrl='<%#myHref%>' >
Vous devrez définir la valeur du contrôle serveur dans le code
Tout d'abord, attribuez un ID au contrôle d'étiquette afin que vous puissiez accéder au contrôle
<asp:Label ID="myLabel" runat="server" />
Ensuite, dans votre fonction▶Load, définissez la valeur du champ 'Texte' de vos étiquettes
protected void Page_Load(object sender, EventArgs e)
{
myLabel.Text = 'Whatever you want the label to display';
}
Cette fonction sera dans votre code derrière le fichier, ou, si vous n'utilisez pas le code derrière le modèle, dans votre page aspx, vous aurez besoin
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
myLabel.Text = 'Whatever you want the label to display';
}
</script>
Bonne chance.
<asp:Label>
compile au moment de l'exécution et se convertit en balises html. Vous pouvez définir du texte avec codebehind ou comme ceci:
<asp:Label id="Text1" runat="server" />
<% Text1.Text = this.Text;%>
PD: On dirait que ma variante ne fonctionne pas, c'est mieux:
protected void Page_Load(object sender,EventArgs e)
{
Text1.Text = this.Text;
}
Juste lancer cette petite pépite pour ceux qui veulent une bonne ventilation technique du problème - https://blogs.msdn.Microsoft.com/dancre/2007/02/13/the-difference-between-and -in-asp-net /
Je pense que le nœud est en assez bon accord avec les autres réponses:
- Les expressions <% = sont évaluées au moment du rendu
- Les expressions <% # sont évaluées au moment de DataBind () et ne sont pas évaluées du tout si DataBind () n'est pas appelé.
- Les expressions <% # peuvent être utilisées comme propriétés dans les contrôles côté serveur. <% = les expressions ne le peuvent pas.