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 ~/
For example:
<a href="~/Customers/Profile.aspx" Runat="server">Profile</a>
will become:
<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");
..or..
string url = VirtualPathUtility.ToAbsolute("~/Customers/Profile.aspx");
..or..
Image x = new Image();
string url = x.ResolveUrl("~/Customers/Profile.aspx");
| Author |
: Paul Hayman |
| Published |
: Wednesday, 14 June, 2006 |
Paul is the COO of kwiboo ltd consultant and has more than a decade of 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.