2010-03-06 2 views
0

Dans le code-behind d'une page ASP.NET J'ai cette méthode:Code incorporé dans NavigateUrl d'un ASP: lien hypertexte. Qu'est-ce que je fais mal?

public string TestFunc() 
{ 
    return "http://www.blabla.net"; 
} 

Et dans le balisage ceci:

<%= TestFunc() %> 

Si je lance la page que je vois "http://www.blabla.net" sous forme de texte sur la page et dans le débogueur j'entre dans TestFunc - tout comme prévu.

Si je mets ce lien hypertexte sur la même page ASPX ...

<asp:HyperLink ID="MyLink" runat="server" NavigateUrl='<%= TestFunc() %>'>Proceed... 
</asp:HyperLink> 

... Je ne rentre pas dans TestFunc débogueur et le code HTML généré de href contient le code intégré simplement sous forme de texte: href="%3C%=%20TestFunc%28%29%20%%3E"

Qu'est-ce que je fais mal ici? J'ai déjà essayé stupide essai et erreur: Remplacé = par #, omis = et remplacé les guillemets simples ' par des guillemets doubles ". Mais tout cela n'a pas aidé. Maintenant, je suis perplexe.

Merci de votre aide à l'avance!

Répondre

1

Vous pouvez utiliser la construction "<%%>" dans un conteneur qui prend en charge les modèles (par exemple GridView avec combinaison de Bind, Eval). Une utilisation simple avec des propriétés entraînera l'encodage de votre expression et affichera "tel quel".

+0

Mais pourquoi alors le premier exemple simple dans ma question sans le HyperLink fonctionne? Ce n'est pas dans un conteneur d'asp. – Slauma

+0

Une telle situation est également autorisée. – sashaeve

+0

Ah d'accord, je comprends. Les propriétés de contrôle (en dehors des modèles de conteneur) constituent le problème. – Slauma