use of tilde (~) in asp.net path

You are correct, it only works in server controls. You've got these basic options:

Change to HyperLink to run as a Web Control:

<asp:HyperLink NavigateUrl="~/BusinessOrderInfo/page.aspx" Text="Whatever" runat="server" />

Or, run the anchor on the server side as an HTML Control:

<a href="~/BusinessOrderInfo/page.aspx" runat="server" >

Or, use Page.ResolveUrl:

<a href="<%= Page.ResolveUrl("~/BusinessOrderInfo/page.aspx") %>">...</a>

HTML controls can be turned into server controls by adding the runat="server" attribute.

<a href="~/BusinessOrderInfo/page.aspx" runat="server">

The tilde refers to the application root directory, and will be translated correctly in control properties such as NavigateUrl.

My understanding is that if you use it in plain-HTML tags, it will not be translated by ASP.Net.