簡體   English   中英

ResolveUrl和ResolveClientUrl有什么區別?

[英]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文檔:

ResolveClientUrl

適用於瀏覽器的指定資源的完全限定URL。

使用ResolveClientUrl方法返回適合客戶端使用的URL字符串,以訪問Web服務器上的資源,例如圖像文件,指向其他頁面的鏈接等。

RESOLVEURL

轉換后的網址。

如果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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM