web-dev-qa-db-fra.com

Quand et pourquoi utiliser Page.ResolveUrl

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 ./?

6
Zippy

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.

8
Si-N