在asp.net路径中使用波浪号(〜)

时间:2010-06-19 22:58:36

标签: c# asp.net

我正在使用asp.net应用程序,以下链接适用于IE但不适用于FF。

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

不是代字号只能在asp.net服务器控件中使用。它将被实际路径取代?

是否可以在锚标签中使用波浪号?这是什么意思?

当我在根时,链接正常工作

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

这是设计吗?

5 个答案:

答案 0 :(得分:91)

你是对的,它只适用于服务器控件。你有这些基本选择:

更改为HyperLinkWeb Control

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

或者,在服务器端以HTML Control

运行锚点
<a href="~/BusinessOrderInfo/page.aspx" runat="server" >

或者,使用Page.ResolveUrl

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

答案 1 :(得分:21)

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

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

答案 2 :(得分:11)

代字号指向应用程序根目录,并将在控件属性(如NavigateUrl)中正确转换。

我的理解是,如果您在纯HTML标记中使用它,ASP.Net将不会对其进行翻译。

答案 3 :(得分:0)

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

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

答案 4 :(得分:-1)

此功能也可用于解析非服务器元素的路径

{
  "/api": {
    "target": "http://localhost:3000",
    "secure": false,
    "logLevel": "debug"
  }
}