繁体   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