2009-12-09 52 views

回答

63

ResolveUrl創建相對於根的URL。

ResolveClientUrl創建相對於當前頁面的URL。

您也可以使用任何你想要的一個,但更常用RESOLVEURL。

13

根據MSDN文檔:

ResolveClientUrl

完全限定的URL適合在 瀏覽器使用指定的 資源。

使用ResolveClientUrl方法 返回一個URL字符串適合 通過客戶端來訪問資源上 Web服務器,如圖像文件, 鏈接至其他頁面,等等。

ResolveUrl

轉換後的URL。

如果relativeUrl參數包含絕對URL,URL被原封不動地返回。如果relativeUrl參數包含相對URL,則該URL將更改爲相對於當前請求路徑正確的相對URL,以便瀏覽器可以解析URL。

例如,請考慮以下 場景:

一個客戶請求ASP.NET頁 包含具有 與之相關聯的圖像的用戶控制。

的ASP.NET頁面位於 /Store/page1.aspx。

用戶控件位於 /Store/UserControls/UC1.ascx。

圖像文件位於 /UserControls/Images/Image1.jpg。

如果用戶控制傳遞到圖像中的 相對路徑(即, /Store/UserControls/Images/Image1.jpg) 到RESOLVEURL方法,所述方法 將返回值 /圖像/ IMAGE1 .JPG。

我覺得這解釋了它相當不錯。

+37

如果MSDN很好地解釋了這種差異,我就不會在這裏。 – 2012-04-13 11:34:06

+1

我認爲MSDN文檔很糟糕,這就是爲什麼我在這裏!大多數人會理解「完全合格的網址」,意思是一個絕對的URL – Andy 2015-03-10 15:53:14

31

這裏有一個簡單的例子:

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

你可以添加一些你的例子的文本解釋嗎? – 2013-10-15 18:46:08

2

簡而言之:

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

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

,但我在asp.net的測試,Page.ResolveUrl更好因爲穩定的輸出&是不相對的。