当我的页面位于解决方案的主要级别时,菜单项href可以找到内容页面。当我将内容页面放在子文件夹中并分别更改href路径时,它找不到该页面。这似乎只是MasterPages的一个问题。我在这里错过了什么吗?我收到了错误 “/”应用程序中的服务器错误无法找到HTTP 404资源。 请求的网址:/Pages/Pages/Items.aspx
为什么它会在我的路径前添加另一个/ Pages?
解决方案
Project
+Images
-Pages
Items.aspx
Library.aspx
+Styles
Default.aspx
Site.Master
母版
<div id="tabdiv" class="tabdiv">
<ul id="tabmenu" class="tabmenu">
<li><a href="Pages/Items.aspx" class="separator">Items</a></li>
<li><a href="Pages/Library.aspx">Library</a></li>
</ul>
</div>
<div id="main" class="main">
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
答案 0 :(得分:5)
简短回答,使用绝对路径(到站点的根目录)或使用~/
将所有页面关联回站点根目录(后者在服务器位置更改之间更安全,更健壮)。
推理?
/
)内,那么链接到Pages/Items.aspx
会将这两者结合起来:/Pages/Items.aspx
。Pages/
时,您现在正在重新引用同一目录Pages/Items.aspx
,因此您获得的综合值为/Pages/Pages/Items.aspx
。如果要关联商品,请查看Control
。ResolveUrl
方法。 e.g。
<a href="<%= Page.ResolveUrl("~/Pages/Items.aspx") %>" class="separator">Items</a>
现在,无论链接嵌入哪个页面,它仍然会提供该资源的绝对路径(在本例中为Items.aspx)。
答案 1 :(得分:3)
试试这个
<li><a href="~/Pages/Items.aspx" class="separator" runat="server">Items</a></li>
<li><a href="~/Pages/Library.aspx" runat="server">Library</a></li>
答案 2 :(得分:1)
使用上面的
<a href="<%= Page.ResolveUrl("~/Pages/Items.aspx") %>" class="separator">Items</a>
答案 3 :(得分:0)
从href
删除页面。母版页是.aspx
页面内容的包装,但是当您在母版页内提供链接时,您应该使用 .aspx 页面的相对路径(假设您的所有内容)页面位于 Pages 文件夹中):
<li><a href="Items.aspx" class="separator">Items</a></li>
<li><a href="Library.aspx">Library</a></li>
另一种选择是使用/
作为前缀,这将使用root-relative link/root link/web-root relative link呈现链接:
<li><a href="/Pages/Items.aspx" class="separator">Items</a></li>
<li><a href="/Pages/Library.aspx">Library</a></li>
答案 4 :(得分:0)
如果您的代码是“a href”,则必须将runat = "server"
与其各自的id = "lnkItem"
放在一起,然后从服务器端编写页面代码:
lnkItem.HRef = ResolveUrl("~/Pages/Items.aspx");
如果您打电话给其他网站,可以使用'ResolveUrl':
Response.Redirect(ResolveUrl("~/Pages/Items.aspx"));
答案 5 :(得分:0)
提供这样的路径。包括您的域名。
<li><a href="http://example.com/Pages/Items.aspx" class="separator">Items</a></li>
或者 您应该使用XML文件或网站路径文件。