如何使用 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.apsxPage13.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 控件在网站的母版页中添加面包屑?的主要内容,如果未能解决你的问题,请参考以下文章

Usercontrol从内容页面的母版页访问Javascript

如何在文件后面的母版页代码中执行异步函数?

如何在两个部分中使用扩展相同的母版页布局?

如何将SharePoint顶部导航定位到中心?

WebFrom 母版页

webfrom 母版页