[英]What is the difference between ResolveUrl and ResolveClientUrl?
我一直在使用ResolveUrl在ASP.NET文件中添加CSS和Javascript。
但我通常會看到ResolveClientUrl的選項。 兩者有什么區別?
我什么時候應該使用ResolveClientUrl?
ResolveUrl創建相對於根的URL。
ResolveClientUrl創建相對於當前頁面的URL。
您也可以使用您想要的任何一個,但ResolveUrl更常用。
這是一個簡單的例子:
//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;
根據MSDN文檔:
適用於瀏覽器的指定資源的完全限定URL。
使用ResolveClientUrl方法返回適合客戶端使用的URL字符串,以訪問Web服務器上的資源,例如圖像文件,指向其他頁面的鏈接等。
轉換后的網址。
如果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方法,則該方法將返回值/Images/Image1.jpg。
我認為這很好地解釋了它。
簡而言之:
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更好,因為輸出穩定而且不相對。
如果你想獲得一個友好的Javascript Url,使用Page.ResolveUrl會更好。
就像從父頁面打開iframe一樣,您需要一個完整的URL來傳遞給iframe src屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.