J'ai donc eu une discussion avec un collègue sur pourquoi et où devrions-nous utiliser Page.ResolveUrl("~/PageUrl.aspx")
au lieu de ./PageUrl.aspx
.
Par exemple, existe-t-il des différences entre:<a href='<%= Page.ResolveUrl("~/Home.aspx")%>' runat="server"> Home </a>
et<a href="./Home.aspx" runat="server"> Home </a>
?
Ici est ce que j'ai trouvé sur msdn mais le seul avantage que j'en vois est que Page.ResolveUrl
Est bon pour résoudre les URL pour le contenu (images et autres choses comme ça)
Ici vous pouvez trouver un bon exemple sur pourquoi utiliser Page.ResolveUrl
Mais Babu Naresh Narra ne dit rien sur l'utilisation de ./
.
Y a-t-il d'autres avantages que Page.ResolveUrl
Offre par rapport à l'approche de base ./
?
Supposons que vous ayez créé un contrôle utilisateur que vous allez utiliser sur de nombreuses pages différentes. Une partie du contrôle utilisateur est un lien vers la page d'accueil.
Si vous utilisez le contrôle utilisateur sur une page de plusieurs niveaux: i.e http: //website/folder1/APageWithUserControlOn.aspx
ensuite ceci :
<a href="./Home.aspx" runat="server"> Home </a>
se résoudra en http: //website/folder1/Home.aspx
Où comme ceci:
<a href="<%= Page.ResolveUrl("~/Home.aspx")%>" runat="server">
Résoudra à http: //website/home.aspx qui est beaucoup plus susceptible d'être ce que vous vouliez car le lien sera correct sur n'importe quelle page. Page.Resolve côté serveur a résolu l'URL à partir de la racine lors de l'utilisation de "~". Vous pourriez penser que vous pourriez utiliser '/Home.aspx' dans le premier exemple, mais cela ne fonctionne pas comme prévu lors de l'utilisation de répertoires virtuels.