2009-12-09 5 views

Antwort

63

ResolveUrl erstellt die URL relativ zum Stammverzeichnis.

ResolveClientUrl erstellt die URL relativ zur aktuellen Seite.

Sie können auch das gewünschte Format verwenden, jedoch wird ResolveUrl häufiger verwendet.

13

Gemäß der Dokumentation MSDN:

ResolveClientUrl

Eine vollständige URL an die angegebene Ressource geeignet für den Einsatz auf dem Browser.

Verwenden Sie die ResolveClientUrl Methode return eine URL-Zeichenfolge für den Einsatz durch den Kunden den Zugriff auf Ressourcen auf der Web-Server, wie Bilddateien, Links zu weiteren Seiten, und so weiter.

ResolveUrl

Die umgewandelte URL.

Wenn der relativeUrl-Parameter eine absolute URL enthält, wird die URL unverändert zurückgegeben. Wenn der relativeUll-Parameter eine relative URL enthält, wird diese URL in eine relative URL geändert, die für den aktuellen Anforderungspfad korrekt ist, sodass der Browser die URL auflösen kann.

Betrachten wir zum Beispiel die folgende Szenario:

Ein Client eine ASP.NET-Seite angefordert hat , die eine Benutzersteuerung enthält, die ein Bild mit ihm verbunden hat.

Die ASP.NET-Seite befindet sich unter /Store/page1.aspx.

Das Benutzersteuerelement befindet sich unter /Store/UserControls/UC1.ascx.

Die Bilddatei befindet sich unter /UserControls/Images/Image1.jpg.

Wenn der Benutzer die Steuerung geht die relativen Pfad zu dem Bild (das heißt, /Store/UserControls/Images/Image1.jpg) zum ResolveUrl Verfahren, wobei das Verfahren den Wert /Bilder zurückgeben/Image1 .jpg.

Ich denke, das erklärt es ziemlich gut.

+37

Wenn MSDN den Unterschied gut erklärt, würde ich nicht hier sein. –

+1

Ich denke, die MSDN-Dokumentation ist schrecklich und deshalb bin ich hier! Die meisten Leute würden "voll qualifizierte URL" als absolute URL verstehen. – Andy

31

Hier ist ein einfaches Beispiel:

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

Könnten Sie eine Erläuterung Ihres Beispiels hinzufügen? –

2

Kurz:

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

und

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

aber in meinen Tests in asp.net, Page.ResolveUrl ist besser wegen der stabilen Ausgabe & ist nicht relativ.

Verwandte Themen