3

当我的页面在解决方案的主级别时,菜单项href可以找到内容页面。当我将内容页面放在子文件夹中并分别更改 href 路径时,它找不到页面。这似乎只是 MasterPages 的问题。我在这里错过了什么吗?我收到错误“/”应用程序中的服务器错误找不到资源 HTTP 404。请求的 URL:/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>
4

6 回答 6

5

简短的回答,使用绝对路径(到站点的根目录)或使用~/将所有页面关联回站点根目录(后者在服务器位置更改之间更加安全和健壮)。

推理?

  • 当您在根 ( /) 链接中时,Pages/Items.aspx将这两者结合起来:/Pages/Items.aspx.
  • 当您已经在其中时,Pages/您现在正在重新引用同一目录Pages/Items.aspx,因此您将获得/Pages/Pages/Items.aspx.

当您想要链接到项目时,请查看Control. ResolveUrl方法。例如

<a href="<%= Page.ResolveUrl("~/Pages/Items.aspx") %>" class="separator">Items</a>

现在,无论该链接嵌入哪个页面,它仍然会提供该资源的绝对路径(在本例中为 Items.aspx)。

于 2013-06-11T13:16:30.323 回答
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>
于 2013-06-11T13:10:06.583 回答
1

使用上面的thge

<a href="<%= Page.ResolveUrl("~/Pages/Items.aspx") %>" class="separator">Items</a>
于 2013-06-11T13:11:31.387 回答
0

href. 母版页是.aspx页面内容的包装,但是当您在母版页内提供链接时,您应该使用.aspx页面的相对路径(假设您的所有页面都在Pages文件夹内):

<li><a href="Items.aspx" class="separator">Items</a></li>
<li><a href="Library.aspx">Library</a></li>

另一种选择是使用前缀/,这将使用根相对链接/根链接/web-root 相对链接呈现链接

<li><a href="/Pages/Items.aspx" class="separator">Items</a></li>
<li><a href="/Pages/Library.aspx">Library</a></li>
于 2013-06-11T13:17:50.417 回答
0

如果您的标签是“a href”,您必须将runat = "server"它们各自放在一起,id = "lnkItem"那么您应该编写来自服务器端的页面代码:

lnkItem.HRef = ResolveUrl("~/Pages/Items.aspx"); 

如果您正在呼叫另一个站点,您可以使用“ResolveUrl”:

Response.Redirect(ResolveUrl("~/Pages/Items.aspx"));
于 2014-10-07T14:15:35.973 回答
0

给出这样的路径。包括您的域名。

<li><a href="http://example.com/Pages/Items.aspx" class="separator">Items</a></li>

或者您应该使用 XML 文件或网站路径文件。

于 2015-06-28T04:37:48.883 回答