ResolveUrl和ResolveClientUrl有什么区别?

我一直在使用ResolveUrl在ASP.NET文件中添加CSS和Javascript。

但是我通常会看到ResolveClientUrl的选项。 两者有什么区别?

什么时候应该使用ResolveClientUrl?

ResolveUrl创build相对于根的URL。

ResolveClientUrl创build相对于当前页面的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方法返回适合客户端使用的URLstring,以访问Web服务器上的资源,例如图像文件,到其他页面的链接等。

RESOLVEURL

转换后的url。

如果relativeUrl参数包含一个绝对URL,则URL将不会被返回。 如果relativeUrl参数包含一个相对URL,则该URL将被更改为相对于当前请求path正确的相对URL,以便浏览器可以parsing该URL。

例如,请考虑以下情形:

客户端请求了一个ASP.NET页面,该页面包含一个具有与之关联的图像的用户控件。

ASP.NET页面位于/Store/page1.aspx。

用户控件位于/Store/UserControls/UC1.ascx。

图像文件位于/UserControls/Images/Image1.jpg。

如果用户控件将相对path传递给ResolveUrl方法(即/Store/UserControls/Images/Image1.jpg),则该方法将返回值/Images/Image1.jpg。

我想这个解释得很好。

简而言之:

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

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

但在我的asp.nettesting中, Page.ResolveUrl更好,因为输出稳定,不是相对的。