-
Problème d'URL relative
Bonjour à tous,
Y a un problème que j'ai du mal à cerner, en fait j'utilise les url relatives et si j'utilise un <a> avec/sans runat="server" le résultat change exemple :
Code:
<a id="lkHome" href="dealer/homepage">
Marche très bien, j'ai bien la bonne url qui se construit qui est :
http://localhost:port/MonSite/dealer/homepage
Et puis si j'utilise (puisque je dois préciser l'url en code-behind) :
Code:
<a id="lkHome" runat ="server" href="dealer/homepage">
Ca ne marche plus, j'ai une url tronqué qui est :
http://localhost:port/dealer/homepage
Sauriez-vous par hasard d'où viens ce problème et comment le résoudre ?
Merci d'avance.
PS : J'ai mis les url's simplifiées puisque j'utilise l'url rewriting ...
-
Intuitivement, je dirais que lorsque le contrôle est uniquement côté client, il créer son url à partir de l'emplacement où il est, mais que côté serveur, il se base sur la root du site.
Si jamais, tu as les méthodes Page.ResolveUrl et Page.ResolveClientUrl qui peuvent t'aider..
-
Essaye ça pour voir
<a id="lkHome" runat ="server" href="~/dealer/homepage">
-
Merci à vous deux pour vos réponses.
Mais tous ce que vous me proposez je l'ai essayé et ça a échoué :aie:
Page.ResolveUrl => Me renvoie à priori l'URI avec le v-dir
Page.ResolveClientUrl ne change rien à mon URL
Code:
<a id="lkHome" runat ="server" href="~/dealer/homepage">
=>
Me renvoie la même URL que sans le ~
-
Ok, tu veux vraiment utiliser un link classique?
Car avec un asp:HyperLink, le ~ devrait fonctionner
-
Non, j'y tiens absolument pas ...
Mais ça ne change rien non plus voici ce que j'ai fais pour tester :
Code:
<asp:HyperLink runat="server" ID="lkHome" NavigateUrl="~/dealer/homepage">
Et j'ai toujours :
http://localhost:port/dealer/homepage
au lieu de
http://localhost:port/MonSite/dealer/homepage
-
Hmmm
Ca pourrait pas être un problème de config du site au niveau de IIS?
-
Alors en fait le problème que j'avais était sur cassini ...
Je suis donc passer sur IIS et là surprise, j'ai encore plus de problème (toute mes url's relatives ont échoué ...), mais que j'ai résolu (avec un peu de bidouille ...).
Par exemple quand je récupère une URL avec une expression <% %>, il concatène avec une partie de l'url précédente (normal puisque elle était subRub/Article) donc je force pour avoir ~/ et la surprise le résultat est :
localhost:port/Site/MonAncienUrl~/subRub/Article
J'ai essayé en mettant que le slash /, j'obtiens :
localhost:port/subRub/Article (sans le Site cette fois).
Et donc je bidouille pour avoir
localhost:port/Site/subRub/Article
J'avais aussi des problèmes avec mes javascript et autre css que j'ai résolu avec :
Code:
"<%=ResolveUrl("~/css/style.css") %>"
Et du coup tout marche, mais je ne suis pas très satisfait (être obliger de mettre /Site dans le web.config et concaténer ...) et surtout j'ai remarqué que j'avais du mal à appréhender ce genre de souci ...
Alors si vous avez des remarques ou des meilleurs pratiques n'hésitez pas.
-
Un avis ?
Ce que je fais actuellement décris dans le post précédent vous parez acceptable ?