c# - Was ist der Unterschied zwischen ResolveUrl und ResolveClientUrl?




asp.net (4)

Ich habe ResolveUrl zum Hinzufügen von CSS und Javascript in ASP.NET-Dateien verwendet.

Normalerweise sehe ich jedoch eine Option von ResolveClientUrl. Was ist der Unterschied zwischen beiden?

Wann sollte ich ResolveClientUrl verwenden?


Die Verwendung von Page.ResolveUrl ist besser, wenn Sie versuchen, eine Javascript-freundliche URL zu erhalten.

Wenn Sie beispielsweise einen iframe von der übergeordneten Seite öffnen, benötigen Sie eine vollständige URL, die an die iframe-Eigenschaft src übergeben wird.


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;

ResolveUrl erstellt die URL relativ zum Stamm.

ResolveClientUrl erstellt die URL relativ zur aktuellen Seite.

Sie können auch verwenden, was Sie möchten, jedoch wird ResolveUrl häufiger verwendet.


Zusamenfassend:

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 ist Page.ResolveUrl besser, weil die Ausgabe stabil ist und nicht relativ ist.





asp.net