链接将从root工作,但从子文件夹不会

时间:2015-04-08 21:55:50

标签: c# asp.net iis-7

我正在编写Web应用程序,我偶然发现了一个非常奇怪的问题(很可能我错过了一些非常微不足道的事情)。问题: 假设我有一个菜单,包含2个按钮(链接)用户,公司

home.aspx处于根级别。这是目录结构。

Home.aspx
/users/userdetail.aspx
/company/companyedit.aspx

当用户在Home.aspx并点击菜单项用户时,他将被正确路由到users / userdetail.aspx。 但是,一旦用户在userdetail.aspx上,我将鼠标悬停在菜单上的公司按钮(链接)上,并查看浏览器的任务栏,有什么奇怪的是它显示的网址是这样的

/users/company/companyedit.aspx

这意味着现在当我点击时,将永远不会找到此页面,因为它正在错误的文件夹中查找。 链接采用以下格式时会出现上述问题

users/company/companyedit.aspx

但如果我使用

/users/company/companyedit.aspx

然后更改用户会话密钥,并破坏现有会话。

有人可以详细说明我可以忽略的东西(我很确定我正在做一些非常愚蠢的事情,但不能把我的手指放在上面)....为什么它会失去应用程序环境。 编辑: 很抱歉下面有一个混乱的评论,这里是我用来创建菜单项的代码示例

<li style="background-image:url('bg.png');background-repeat:no-repeat;background-position:3px;">
   <a href="~/users/userdetails.aspx" class="arrow">Users Detail</a></li>
 </li>
 <li style="background-image:url('bg.png');background-repeat:no-repeat;  background-position:3px;">
   <a href='~/company/companyedit.aspx' class="arrow">Compnay Profile</a>
 </li>

2 个答案:

答案 0 :(得分:0)

纯HTML不了解~/应用程序根相对语法。最简单的解决方案是切换到使用HyperLink控件。 Web窗体将自动处理它并创建相对于当前应用程序根目录的URL。

<asp:HyperLink runat="server" NavigateUrl="~/company/companyedit.aspx" Text="Company Profile" CssClass="arrow" />

顺便说一下,您不应该使用内联style属性。而是将该样式信息移动到CSS文件中,并使用class属性应用它。重用该样式更容易,从而减少了带宽。客户端也可以缓存CSS文件,因此他们的页面加载速度更快(并使用更少的带宽!)

答案 1 :(得分:0)

在尝试的时候,我遇到了这个

<%=Response.ApplyAppPathModifier('/folder/myurl.aspx') %>

这似乎已经奏效并解决了我的问题。感谢所有花时间研究它的人,特别是Donnelle。谢谢