ASP.NET MVC 4包含动态列表和参数的面包屑

时间:2013-02-27 15:58:44

标签: razor asp.net-mvc-4 breadcrumbs

基本上我要做的就是创建一个面包屑列表。动态列表(当您向下钻取深层页面时,面包屑列表会增长)并且大多数链接都有参数。我已经看过MVCSiteInfo的例子,但有点困惑,因为我见过的大多数例子都集中在没有参数的静态链接集上。我无法想象这不是一个常见的问题所以我想知道实现这一功能的最佳方法是什么。

提前致谢!

西格

1 个答案:

答案 0 :(得分:7)

我建议您使用MVC Sitemap provider和面包碎屑。您需要构建一个动态节点提供程序,但这非常简单 - 只需按照the steps to use Dynamic Nodes

构建动态节点时的一个技巧是确保您在每个级别的每个节点上进行操作,但是将其添加到顶部的节点集合中。

        var nodes = new List<DynamicNode>();
        foreach (var eventCategory in eventCategories)
        {
            var node = new DynamicNode
                {
                    Key = string.Format("{0}_{1}", "home_events", eventCategory.Name),
                    ParentKey = "home_events",
                    Title = pluralize.Pluralize(eventCategory.Name),
                    Description = eventCategory.Description,
                    Controller = "event",
                    Action = "category"
                };
            node.RouteValues.Add("slug", eventCategory.Slug);
            nodes.Add(node);

            foreach (var e in eventCategory.Events)
            {
                var eventNode = new DynamicNode
                {
                    Key = string.Format("{0}_{1}", eventCategory.Name, e.Name),
                    ParentKey = node.Key,
                    Title = e.Name,
                    Controller = "event",
                    Action = "event"
                };
                eventNode.RouteValues.Add("categorySlug", eventCategory.Slug);
                eventNode.RouteValues.Add("slug", e.Slug);
                nodes.Add(eventNode);
            }
        }

然后只是将面包屑放在这样的情况下

Html.MvcSiteMap().SiteMapPath()

主页&gt;事件&gt;马拉松&gt;墨尔本马拉松