在asp.netpath中使用波浪号(〜)

我正在一个asp.net应用程序,下面的链接工作在IE中,但不是在FF。

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

是不是只能在asp.net服务器控件中使用的代字符。 哪里会被实际的path取代?

是否有可能在锚标签中使用代字号? 如果是这是什么意思?

当我在根,链接工程

 www.myserver.com/default.aspx, click the link, ok! www.myserver.com/otherpart/default.aspx, click the link, not ok! 

ASP.NET生成的链接是:

 www.myserver.com/otherpart/~BusinessOrderInfo/page.aspx 

这是由devise?

你是正确的,它只适用于服务器控制。 你有这些基本的select:

更改为HyperLink以作为Web控件运行:

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

或者,作为HTML控件在服务器端运行定位点:

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

或者,使用Page.ResolveUrl

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

通过添加runat =“server”属性,可以将HTML控件转换为服务器控件。

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

代字号代表应用程序的根目录,并将在控件属性(如NavigateUrl)中正确翻译。

我的理解是,如果你使用纯HTML标签,它不会被ASP.Net翻译。

如果您删除波浪号并使用正斜杠,则只会获得相同的结果,即指向当前域上的根文件夹:

 <a href="/BusinessOrderInfo/page.aspx" > 

这个函数也可以用来parsing非服务器元素的path

 VirtualPathUtility.ToAbsolute($"~/App_Themes/Default/Icons/myimage.gif")