ASP.NET相对路径

Did*_*evy 18 asp.net path

我对ASP.NET相对路径感到困惑,请有人帮忙吗?

在Master Page中我给出了一个链接标签引用:

<a href="~/Account/Login.aspx">Login</a>
Run Code Online (Sandbox Code Playgroud)

从ASP.NET官方文档我读到:

下面的示例示出了用于指定一个根目录相对路径〜操作者使用图像服务器控制在这个例子中,当对图像,图像文件是从直接位于Web应用程序的根目录下的图像文件夹中读出,而不管页面所在网站的位置.

<asp:image runat="server" id="Image1" ImageUrl="~/Images/SampleImage.jpg" />

使用登录标记,当我从/ Account文件夹中的页面单击链接时,我被重定向到:

/Account/~/Account/Login.aspx
Run Code Online (Sandbox Code Playgroud)

为什么?为什么?^ h

Dav*_*vid 29

因为您直接在标记中使用它,而不是在服务器控件中使用它.像这样简单的东西应该解决它:

<a runat="server" href="~/Account/Login.aspx">Login</a>
Run Code Online (Sandbox Code Playgroud)

基本上,~路径引用需要在服务器上进行转换,因为它是对应用程序基本目录的服务器路径的引用.纯HTML标记不在服务器上处理,它只是按原样交付给客户端.只有服务器处理的代码才会将~路径转换为它解析的内容.

  • 或者:<a href="<%= ResolveClientUrl("~/Account/Login.aspx") %>">登录</a>应该会给你相同的结果. (8认同)

Meh*_*hdi 7

使用这个命令

<a href="<%=Page.ResolveUrl("~/product.aspx")%>" >Link To Products</a>
Run Code Online (Sandbox Code Playgroud)