tags:

views:

1200

answers:

4

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 you be sending relative paths or absolute paths down in your html?

+12  A: 

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/about/developerblog/2007/06/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

Aaron Hoffman
+1 good one. BTW, how may it help with caching? (And which caching?)
Maxwell Troy Milton King
At the time I was thinking it may help the client (or browser) cache images and such from the server (that is if the caching service was not very intelligent, it may duplicate items if relative paths are used). But I can't say for certain, so I removed that.
Aaron Hoffman
+3  A: 

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

Rohit Agarwal
A: 

What about google analystics doe sit see them differently?

WASSA
+2  A: 

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)

Daniel Ballinger