在解析以波浪号(〜)开头的路径时,使用其中一种方法是否有任何好处?
一般来说,如果你在html中发送相对路径或绝对路径,那么更好的做法是什么?
答案 0 :(得分:24)
ResolveUrl和ResolveClientUrl之间的区别在于ResolveClientUrl返回相对于当前页面的路径,ResolveUrl返回相对于站点根目录的路径:
http://www.andornot.com/blog/post/ResolveUrl-vs-ResolveClientUrl.aspx
我建议使用绝对路径。
编辑:Rick Strahl发布了一篇关于此
的好文章Edit2 :删除了有关缓存的内容。不添加答案,可能不一定准确。
答案 1 :(得分:5)
这是另一篇解释ASP.NET中解析路径的各种方法之间差异的文章 -
答案 2 :(得分:4)
请注意,如果路径中包含查询字符串,VirtualPathUtility.ToAbsolute(virtualPath)将引发异常。
HttpException消息将沿着''〜/ YourVirtualPath / YourPage.aspx?YourQueryStringArg = FooBar'不是有效的虚拟路径。“
参见Rick Strahl's Web Log:ResolveUrl() without Page 和MSDN: 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