70 votes

utilisation du tilde (~) dans un chemin asp.net

Je travaille sur une application asp.net, et ce lien fonctionne dans IE mais pas dans FF.

<a href="~/BusinessOrderInfo/page.aspx" >

mais je me demandais, le tilde n'est-il pas quelque chose qui ne peut être utilisé que dans les contrôles du serveur asp.net, et qui sera alors remplacé par le chemin réel ?

Est-il possible d'utiliser le tilde dans une balise a, et que signifie-t-il alors ?

Au fait, quand je suis dans le Root, le lien fonctionne.

www.myserver.com/default.aspx, click the link, ok!

www.myserver.com/otherpart/default.aspx, click the link, not ok!

cela crée ceci :

www.myserver.com/otherpart/~BusinessOrderInfo/page.aspx

Est-ce que c'est fait exprès ? (je veux savoir, car j'ai le privilège de corriger ce bug (si c'en est un) :-))

91voto

Dean Harding Points 40164

Vous avez raison, cela ne fonctionne que dans les contrôles du serveur. Vous avez ces options de base :

Changer pour HyperLink pour fonctionner comme un Contrôle du Web :

<asp:HyperLink NavigateUrl="~/BusinessOrderInfo/page.aspx" Text="Whatever" runat="server" />

Ou bien, exécutez l'ancre du côté serveur en tant que Contrôle HTML :

<a href="~/BusinessOrderInfo/page.aspx" runat="server" >

Ou bien, utilisez Page.ResolveUrl :

<a href="<%= Page.ResolveUrl("~/BusinessOrderInfo/page.aspx") %>">...</a>

21voto

Damien Dennehy Points 1614

Les contrôles HTML peuvent être transformés en contrôles serveur en ajoutant l'attribut runat="server".

<a href="~/BusinessOrderInfo/page.aspx" runat="server">

11voto

devio Points 22981

Le tilde fait référence au répertoire racine de l'application, et sera traduit correctement dans les propriétés du contrôle telles que NavigateUrl.

Si je comprends bien, si vous l'utilisez dans des balises HTML simples, il ne sera pas traduit par ASP.Net.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X