Is there any benifit to using one of these methods over the other when resolving paths which start with the tilde (~)?
Generally, what is a better practice, should y
Here's another article that explains the difference between the various ways to resolving paths in ASP.NET -
Different approaches for resolving URLs in ASP.NET
The difference between ResolveUrl and ResolveClientUrl is that ResolveClientUrl returns a path relative to the current page, ResolveUrl returns a path relative to the site root:
http://www.andornot.com/blog/post/ResolveUrl-vs-ResolveClientUrl.aspx
I would recommend using absolute paths.
Edit: Rick Strahl posted a nice article about this
Edit2: Removed bit about caching. Does not add to the answer and may not necessarily be accurate.
http://west-wind.com/weblog/posts/132081.aspx
Another difference I noticed:
Code:
string value = "~/Docs/Hello & World.aspx";
Response.Write(HyperLink1.ResolveClientUrl(value) + "<br/>");
Response.Write(HyperLink1.ResolveUrl(value) + "<br/>");
Result:
Docs/Hello%20&%20World.aspx
/Docs/Hello & World.aspx
Note that VirtualPathUtility.ToAbsolute(virtualPath) will throw an exception if a query string is included in the path.
The HttpException message will be along the lines of "'~/YourVirtualPath/YourPage.aspx?YourQueryStringArg=FooBar' is not a valid virtual path."
See Rick Strahl's Web Log:ResolveUrl() without Page and MSDN: VirtualPathUtility.ToAbsolute Method (String)