我对ASP.NET的相对路径感到困惑,请有人帮忙吗?
在母版页中,我提供了一个引用链接标签:
<a href="~/Account/Login.aspx">Login</a>
我从ASP.NET官方文档中读到:
以下示例显示了使用图像服务器控件时用于为图像指定根相对路径的〜运算符在此示例中,图像文件是从位于Images文件夹中读取的直接位于Web应用程序的根目录下,,无论页面位于网站的哪个位置。
<asp:image runat="server" id="Image1"
ImageUrl="~/Images/SampleImage.jpg" />
使用Login标记,当我从/ Account文件夹中的页面单击链接时,我被重定向到:
/Account/~/Account/Login.aspx
为什么呢? WHY 2 H
答案 0 :(得分:28)
因为您直接在标记中使用它,而不是在服务器控件中使用它。像这样简单的东西应该解决它:
<a runat="server" href="~/Account/Login.aspx">Login</a>
基本上,~
路径引用需要在服务器上进行转换,因为它是对应用程序基本目录的服务器路径的引用。纯HTML标记不在服务器上处理,它只是按原样交付给客户端。只有服务器处理的代码才会将~
路径转换为它解析的内容。
答案 1 :(得分:2)
使用此命令
<a href="<%=Page.ResolveUrl("~/product.aspx")%>" >Link To Products</a>
答案 2 :(得分:0)
在引用ASP.NET服务器控件中的URL时,可以使用〜。
你正在<a>
标签中使用它,这只是简单的html,对〜不知道任何事情。使用'“/ images/SampleImage.jpg”'代替