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

Sie*_*gel 10 breadcrumbs razor asp.net-mvc-4

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

提前致谢!

西格

Pet*_*SFT 7

我建议你使用MVC Sitemap提供商和它的面包屑路径.您将需要构建一个动态节点提供程序,但这非常简单 - 只需按照步骤使用动态节点即可

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

        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);
            }
        }
Run Code Online (Sandbox Code Playgroud)

然后它只是像这样把面包屑放进去的情况

Html.MvcSiteMap().SiteMapPath()
Run Code Online (Sandbox Code Playgroud)

主页>赛事>马拉松>墨尔本马拉松赛