Control.ResolveUrl与Control.ResolveClientUrl对比VirtualPathUtility.ToAbsolute

时间:2009-02-05 22:09:57

标签: .net asp.net

在解析以波浪号(〜)开头的路径时,使用其中一种方法是否有任何好处?

一般来说,如果你在html中发送相对路径或绝对路径,那么更好的做法是什么?

4 个答案:

答案 0 :(得分:24)

ResolveUrl和ResolveClientUrl之间的区别在于ResolveClientUrl返回相对于当前页面的路径,ResolveUrl返回相对于站点根目录的路径:

http://www.andornot.com/blog/post/ResolveUrl-vs-ResolveClientUrl.aspx

我建议使用绝对路径。

编辑:Rick Strahl发布了一篇关于此

的好文章

Edit2 :删除了有关缓存的内容。不添加答案,可能不一定准确。

http://west-wind.com/weblog/posts/132081.aspx

答案 1 :(得分:5)

这是另一篇解释ASP.NET中解析路径的各种方法之间差异的文章 -

Different approaches for resolving URLs in ASP.NET

答案 2 :(得分:4)

请注意,如果路径中包含查询字符串,VirtualPathUtility.ToAbsolute(virtualPath)将引发异常。

HttpException消息将沿着''〜/ YourVirtualPath / YourPage.aspx?YourQueryStringArg = FooBar'不是有效的虚拟路径。“

参见Rick Strahl's Web Log:ResolveUrl() without PageMSDN: VirtualPathUtility.ToAbsolute Method (String)

答案 3 :(得分:1)

我注意到的另一个不同之处:

<强>代码:

string value = "~/Docs/Hello & World.aspx"; Response.Write(HyperLink1.ResolveClientUrl(value) + "<br/>"); Response.Write(HyperLink1.ResolveUrl(value) + "<br/>");

<强>结果:

文档/你好%20安培;%20World.aspx

/ Docs / Hello&amp; World.aspx