ResolveUrl和ResolveClientUrl有什么区别?

时间:2009-12-09 15:25:59

标签: c# asp.net

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

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

我什么时候应该使用ResolveClientUrl?

5 个答案:

答案 0 :(得分:66)

ResolveUrl创建相对于root的URL。

ResolveClientUrl创建相对于当前页面的URL。

你也可以使用你想要的任何一个,但ResolveUrl更常用。

答案 1 :(得分:33)

这是一个简单的例子:

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

答案 2 :(得分:13)

根据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。

我认为这很好地解释了它。

答案 3 :(得分: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更好,因为输出稳定,而且不是相对的。

答案 4 :(得分:0)

如果您尝试获取Java友好的网址,则使用Page.ResolveUrl会更好。

就像从父页面打开iframe一样,您需要将完整的URL传递给iframe src属性。