日期:2014-05-17  浏览次数:20409 次

请问,SiteMapPath为什么只能显示第一层结点啊?
web.sitemap:

<?xml version="1.0" encoding="utf-8" ?>
<siteMap>
  <siteMapNode title="主页" url="home.aspx">
  <siteMapNode title="服务" url="service.aspx">
  <siteMapNode title="培训" url="training.aspx"/>
  <siteMapNode title="技术支持" url="support.aspx"/>
  </siteMapNode>
  </siteMapNode>
</siteMap>



home.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="home.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
  <title>无标题页</title>
</head>
<body>
  <form id="form1" runat="server">
  <div>
  <br />
  <asp:SiteMapPath ID="SiteMapPath1" runat="server">
  </asp:SiteMapPath>
  &nbsp;</div>
  </form>
</body>
</html>



  查了好多资料,最后还是无功而返,谢谢各位的帮忙!


------解决方案--------------------
web.sitemap文件一定要包含该页的记录,即<siteMapNode title="***" description="***" 
url="~/***.aspx" />结点,至少有一个是该页的url,例如该页是default.aspx,那么必须有这么一个节点<siteMapNode title="***" description="***" 
url="~/default.aspx" />
------解决方案--------------------
楼主好像没有理解SiteMapPath的用途,这个控件是用来显示导航位置的,就比方说本页面在MSDN上的当前位置是(看下页面顶部):
CSDN - CSDN社区 - .NET技术 - ASP.NET

如果你把最内层那个siteMapNode 改成 home.aspx, 最顶层的siteMapNode 改成随便其它名称,你就可以看到长长的一串显示出你的页面的当前位置。试一试看看效果你就明白了。
------解决方案--------------------
当在home.aspx的SiteMapPath显示的是主页
如果你想看到所有的节点,就在support.aspx。SiteMapPath节点显示是从后向前的。