是否可以使用ASP.NET Sitemap生成Breadcrumbs?

时间:2009-02-16 21:23:24

标签: .net asp.net sitemap breadcrumbs sitemappath

我希望我的ASP.NET站点有简单的菜单字符串aka Breadcrumbs。 我创建了包含所有必需元素的Sitemap并注册到Web.config中。例如:

<siteMap>
    <siteMapNode url="Default.aspx" title="Home" >
        <siteMapNode url="hosting/Default.aspx" title="Hosting" />
        <siteMapNode url="software/Default.aspx" title="Software">
            <siteMapNode url="firefox/Default.aspx" title="Firefox">
                <siteMapNode url="Download.aspx" title="Download" />
                <siteMapNode url="Support.aspx" title="Support" />
            </siteMapNode>
        </siteMapNode>
    </siteMapNode>
</siteMap>

并在Masterpage上创建了一个控件。这是菜单生成代码:

protected void Control_Load(Object sender, EventArgs e)
{
    string path = String.Empty;
    StringCollection list = new StringCollection();

    foreach (string str in Request.Url.Segments)
    {
        path += str;
        string link = String.Format("<a href=\"{0}://{1}{2}\">{3}</a>", Request.Url.Scheme, Request.Url.Authority, path, this.names[str]);
        list.Add(link);
    }

    foreach (string str in list)
    {
        menu += String.Concat(str, SeparatorLine);
    }
    menu = menu.Remove(menu.LastIndexOf(SeparatorLine));
}

但它使用像{{“/”,“Home”},{“hosting /”,“Hosting”},{“software /”,“Software”}这样的StringDictionary。}

如何使用Sitemap查询而不是查询?或者可能是别的东西,不是Sitemap,而是事先发明的。

3 个答案:

答案 0 :(得分:9)

ASP.NET SiteMapPath Control

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

答案 1 :(得分:5)

您可以使用SiteMapPath控件(应位于工具箱的“导航”类别中)。查看this page获取教程。

答案 2 :(得分:1)

只需将SiteMapProvider属性设置为要用于面包屑的站点地图的提供程序,即可进行设置。我通常只将SiteMapPath放在div中,并在div上设置CSS来设置面包屑的样式。

但是要注意一点。如果您取消站点地图中的任何根节点,它们仍会显示在您的面包屑中。我试图使用相同的站点地图进行面包屑,并使用SiteMapDataSource进行树视图,我想要不显示起始节点。

祝你好运!