如何使用 Sitemappath 控件在网站的母版页中添加面包屑?
Posted
技术标签:
【中文标题】如何使用 Sitemappath 控件在网站的母版页中添加面包屑?【英文标题】:How to use Sitemappath control to add breadcrumbs in Master Page of a website? 【发布时间】:2014-03-04 11:18:53 【问题描述】:我正在尝试在我的网页上添加面包屑以方便导航。为此,我正在使用 Asp.Net 的 SiteMapPath 控件,同时我还制作了一个列出所有页面的 breadcrumb.Sitemap 文件。但是在我的母版页中实现站点地图路径时,我遇到了一个一般性错误。我无法理解为什么会这样? 这是我的aspx页面的基本结构-
<div id="menu-pt">
<div class="hm"><a href="Page1.aspx" class="active">Home</a></div>
<div id="nav">
<ul id="nav" name="nav">
<li><a href="Page2.aspx">Page2</a></li>
<div class="saparation"></div>
<li><a href="Page3.aspx">Page3</a></li>
<div class="saparation"></div>
<li> <a href="Page4.aspx">Page4</a></li>
<div class="saparation"></div>
<li><a href="#">Pages</a>
<div id ="Ul2" runat="server">
<ul id="sub-nav" >
<li><a href="Page5.aspx">Page5</a></li>
<li><a href="Page6.aspx">Page6</a></li>
<li><a href="Page7.aspx">Page7</a></li>
<li><a href="Page8.aspx">Page8</a></li>
</ul>
</div>
<div id ="Ul1" runat="server">
<ul id="sub-nav" >
<li><a href="Page9.aspx">Page9</a></li>
<li><a href="Page10.aspx">Page10</a></li>
<li><a href="Page11.aspx">Page11</a></li>
<li><a href="Page12.aspx">Page12</a></li>
<li><a href="Page13.aspx">Page13</a></li>
</ul>
</div>
</li>
</ul>
</div>
</div>
Page5,6,7,8.aspx 页面适用于所有用户。还有
Page9,10,11,12,13.aspx 页面用于登录用户。
我的 breadcrumb.sitemap 文件是-
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="Page1.aspx" title="Home" description="Page1">
<siteMapNode url="Page2.aspx" title="Page2" description="Page2" />
<siteMapNode url="Page3.aspx" title="Page3" description="Page3" />
<siteMapNode url="Page4.aspx" title="Page4" description="Page4" />
<siteMapNode url="" title="Pages" description="">
<siteMapNode url="Page5.aspx" title="Page5" description="Page5" />
<siteMapNode url="Page6.aspx" title="Page6" description="Page6" />
<siteMapNode url="Page7.aspx" title="Page7" description="Page7" />
<siteMapNode url="Page8.aspx" title="Page8" description="Page8" />
<siteMapNode url="Page9.aspx" title="Page9" description="Page9" />
<siteMapNode url="Page10.aspx" title="Page10" description="Page10" />
<siteMapNode url="Page11.aspx" title="Page11" description="Page11" />
<siteMapNode url="Page12.aspx" title="Page12" description="Page12" />
<siteMapNode url="Page13.aspx" title="Page13" description="Page13" />
</siteMapNode>
</siteMapNode>
</siteMap>
我还在我的 aspx 页面上放置了一个站点地图路径控件-
<asp:SiteMapPath ID="SiteMapPath1" runat="server"></asp:SiteMapPath>
请指导我哪里做错了。我读了几篇文章,它说这么多步骤足以在网站的每个页面上添加面包屑。 请指导我哪里做错了?
【问题讨论】:
什么是错误...?? @MayankPathak 我收到一个一般性错误。我不知道那是什么。我进行的过程是正确的还是您认为我做错了什么? 实际上,当我在示例项目中使用 asp.net 的菜单控件并尝试相同的方法时,我能够显示面包屑。但在我的实际项目中,我没有使用任何菜单控件。我使用 制作了我的菜单 【参考方案1】:SiteMapPath
控件默认使用Web.sitemap
文件。另外,将站点地图文件放在网站的根目录下,并且 URL 属性应该是相对于根目录的。
此外,您尝试查看的页面必须包含在站点地图文件中,否则此页面上将不会显示任何面包屑。
编辑::
确保您在母版页上包含SiteMapPath
控件,以便它可用于从Page1.apsx
到Page13.aspx
的所有页面(如果它们都使用主文件),否则您应该放置在需要显示面包屑的每个页面上单独控制 SiteMapPath。
您还提到您的站点地图文件为breadcrumb.sitemap
,只需确保它应该是Web.sitemap。如果已经是Web.sitemap,就留下吧。
刚刚尝试了您的代码,面包屑显示正确。[左上角]。在我的例子中,SiteMapPath 控件被放置在主文件中。
【讨论】:
您好先生,我已经使用了 web.sitemap 文件,并且我还包含了我的站点地图节点以及其中列出的所有页面。我已经在我的问题中发布了我的 web.sitemap 示例。我仍然无法在我的网页中实现面包屑。请检查我在问题中发布的示例。我期待着您的指导先生。 您将 SiteMapPath 控件放在哪里?应单独位于主文件或所有页面上。请检查对我的答案所做的编辑。完全复制了您的代码,发现这与放置在主文件上的 SiteMapPath 一起使用。当将 SiteMapPath 单独放置在每个页面上时,它也可以工作(不是一个好习惯) 您好,先生,我已在我的母版页中的 contentplaceholder 之外放置了站点地图路径控件。不,实际上我的项目中有三个不同的母版页,并且我制作了这个 breadcrumbs.sitemap 文件,列出了我项目的所有页面。我只用一个母版页尝试了这个站点地图路径控件。我是否需要在每个页面中单独放置站点地图路径?或者我是否需要为母版页制作三个不同的 .sitemap 文件?列出各个页面? YES,在每个主文件中添加 SiteMapPath 控件。此外,真正令人困惑的一件事是您的站点地图文件的名称是:Web.sitemap OR breadcrumb.sitemap ??正如您在上面的评论中提到的 breadcrumb.sitemap。它应该是 Web.sitemap。 其实我已经把web.sitemap文件的名字改成了breadcrumbs.sitemap。那么我需要删除这个文件重新创建一个新文件吗?以上是关于如何使用 Sitemappath 控件在网站的母版页中添加面包屑?的主要内容,如果未能解决你的问题,请参考以下文章