如何使用Sitemappath控件在网站的母版页中添加面包屑?

时间:2014-03-04 11:18:54

标签: c# asp.net xml breadcrumbs sitemappath

我正在尝试在网页上添加面包屑以便于导航。为此,我使用Asp.Net的SiteMapPath控件,并且我还制作了一个breadcrumb.Sitemap文件,列出了所有页面。但是在我的母版页中实现sitemappath时,我收到了一般错误。我无法理解为什么会这样? 这是我的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页面上放置了一个sitemappath控件 -

    <asp:SiteMapPath ID="SiteMapPath1" runat="server"></asp:SiteMapPath>
    

    请指导我做错的地方。我阅读了一些文章,它说这个步骤足以在网站的每个页面上添加面包屑。 请指导我在哪里做错了?

  • 1 个答案:

    答案 0 :(得分:0)

    SiteMapPath控件默认使用Web.sitemap文件。另外,将站点地图文件放在网站的根目录中,URL属性应该相对于根目录。

    您尝试查看的页面也必须包含在站点地图文件中,否则此页面上不会显示任何痕迹。

    修改::

    确保在主页上包含SiteMapPath控件,以便它可用于从Page1.apsxPage13.aspx的所有页面(如果它们都使用主文件)否则,您应该将SiteMapPath控件单独放在需要显示痕迹的每个页面上。

    您还提到您的站点地图文件为breadcrumb.sitemap,只是确保它应该是Web.sitemap。如果它已经是Web.sitemap,请保留它。

    刚试过你的代码并且正确显示了痕迹。[左上角]。在我的例子中,SiteMapPath控件放在主文件上。

    enter image description here