我一直在使用ResolveUrl在ASP.NET文件中添加CSS和Javascript。
但我通常会看到ResolveClientUrl的选项。两者有什么区别?
我什么时候应该使用ResolveClientUrl?
答案 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文档:
指定的完全限定的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。
我认为这很好地解释了它。
答案 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属性。