Programmatically resolving ~ URL's to the Virtual Root using ResolveURL()
It's common knowledge that a control, when Runat="server" will resolve it's src or href attribute to a virtual root when the URL starts with ~/
<a href="~/Customers/Profile.aspx" Runat="server">Profile</a>
<a href="http://yourdomain.com/site/Customers/Profile.aspx" Runat="server">Profile</a>
How do we do this programmatically?
The base WebControl class exposes a method named ResolveURL(). This method accepts a url such as "~/Customers/Profile.aspx" and returns the real url, starting from your site's virtual root.
To get to this functionality you can use the following pattern:
string url = Page.ResolveClientUrl("~/Customers/Profile.aspx");
string url = VirtualPathUtility.ToAbsolute("~/Customers/Profile.aspx");
Image x = new Image(); string url = x.ResolveUrl("~/Customers/Profile.aspx");
Paul is the COO of kwiboo ltd and has more than 20 years IT consultancy experience. He has consulted for a number of blue chip companies and has been exposed to the folowing sectors: Utilities, Telecommunications, Insurance, Media, Investment Banking, Leisure, Legal, CRM, Pharmaceuticals, Interactive Gaming, Mobile Communications, Online Services.
Paul is the COO and co-founder of kwiboo (http://www.kwiboo.com/) and is also the creator of GeekZilla.