使用母版asp.net时如何在文件夹中查找页面

时间:2013-06-11 13:08:09

标签: asp.net visual-studio-2010 web-applications

当我的页面位于解决方案的主要级别时,菜单项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>

6 个答案:

答案 0 :(得分:5)

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

推理?

  • 如果您位于根目录(/)内,那么链接到Pages/Items.aspx会将这两者结合起来:/Pages/Items.aspx
  • 当您已经在Pages/时,您现在正在重新引用同一目录Pages/Items.aspx,因此您获得的综合值为/Pages/Pages/Items.aspx

如果要关联商品,请查看ControlResolveUrl方法。 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文件或网站路径文件。