>>Why would the ~ ever get sent to the client over an Internet Connection? The ~ would be resolved before that.
>>
>>You'd call ResolveUrl() as part of your NavigateUrl assignment below...
>
>Ok, so basically, ResolveUrl() is simply a generic way to obtain the URL I need. I understand there is no easy way to avoid that approach by simply using HTML code.
Well, the BASE header tag lets you get around some of this, but it's tricky to get right and problematic if you move pages. It's always better to set up the links in the page fully through code that way you're guaranteed a good link without relying on something that sits on the page.
I can't remember all the details but the BASE tag doesn't apply against everything. In ASP.NET it's easy to use server controls and the ~ syntax which all the native controls understand and give you the correct relative linking.