2009-12-09 3 views

Répondre

63

ResolveClientUrl crée l'URL par rapport à la page actuelle.

Vous pouvez également utiliser celui que vous voulez, mais ResolveUrl est plus couramment utilisé.

13

Selon la documentation MSDN:

ResolveClientUrl

URL complète à la ressource spécifiée appropriée pour une utilisation sur le navigateur .

Utilisez la méthode ResolveClientUrl pour retour une chaîne URL appropriée pour une utilisation par le client d'accéder aux ressources sur le serveur Web, tels que les fichiers d'image, liens vers des pages supplémentaires, et ainsi de suite.

ResolveUrl

L'URL convertie.

Si le paramètre relatifUrl contient une URL absolue, l'URL est renvoyée telle quelle. Si le paramètre relatifUrl contient une URL relative, cette URL est modifiée en une URL relative correcte pour le chemin de requête en cours, afin que le navigateur puisse résoudre l'URL.

Par exemple, considérons le scénario suivant:

Un client a demandé une page ASP.NET qui contient un contrôle utilisateur qui a une image qui lui est associée.

La page ASP.NET est située au /Store/page1.aspx. Le contrôle de l'utilisateur est situé à /Store/UserControls/UC1.ascx. Le fichier image se trouve à /UserControls/Images/Image1.jpg.

Si le contrôle utilisateur passe le chemin par rapport à l'image (qui est, /Store/UserControls/Images/Image1.jpg) la méthode ResolveUrl, le procédé retourne la valeur /images/Image1 .jpg

Je pense que cela explique assez bien.

+37

Si MSDN expliquait bien la différence, je ne serais pas ici. –

+1

Je pense que la documentation MSDN est terrible et c'est pourquoi je suis ici! la plupart des gens comprendraient "URL qualifié" pour signifier une URL absolue – Andy

31

Voici un exemple simple:

//Returns: ../HomePage.aspx 
String ClientURL = ResolveClientUrl("~/HomePage.aspx"); 

//Returns: /HomePage.aspx 
String RegURL = ResolveUrl("~/HomePage.aspx"); 

//Returns: C:\inetpub\wwwroot\MyProject\HomePage.aspx 
String ServerMappedPath = Server.MapPath("~/HomePage.aspx"); 

//Returns: ~/HomePage.aspx 
String appRelVirtPath = AppRelativeVirtualPath; 

//Returns: http://localhost:4913/ 
String baseUrl = Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath; 

//Returns: "http://localhost:4913/HomePage.aspx" 
String absUri = Request.Url.AbsoluteUri; 
+0

Pourriez-vous ajouter une explication textuelle de votre exemple? –

2

En bref:

Page.ResolveUrl(~): creates the URL from the root of app. 

et

Page.ResolveClientUrl(~): creates the URL relative to the current page.(e.g: ../../..) 

mais dans mes tests en asp.net, Page.ResolveUrl est mieux en raison de la sortie stable & n'est pas relatif.

Questions connexes