2013-02-27 82 views
9

基本上我想做的是创建一个面包屑列表。这个动态列表(当您深入到深层页面的面包屑列表增长),大多数链接都有参数。我见过MVCSiteInfo的例子,但有点困惑,因为我看过的大多数例子都集中在一个没有参数的静态链接上。我无法想象这不是一个普遍的问题,所以我想知道什么是完成此功能的最佳方法。ASP.NET MVC 4带动态列表和参数的面包屑

在此先感谢!

西格

+1

你有没有找到解决的办法?我也在寻找一些东西 – dreza 2013-03-15 09:36:22

+0

Dreza,我见过很多使用SiteMap的人。它似乎做这项工作,但看起来相当复杂。我选择只是在页面中有一个部分,只是填充相关链接。布局页面包含列表的主ul标签。对我来说似乎更简单。 – 2013-04-02 22:07:39

+0

为此欢呼。是的,我查看了网站地图,甚至用了一下,但在尝试使用它的问题上遇到了很多问题,所以不确定是否值得付出努力。 – dreza 2013-04-02 22:56:31

回答

7

我建议你使用MVC Sitemap provider和面包屑小径从它。您需要构建动态节点提供程序,但这很简单 - 只需执行以下步骤:the steps to use Dynamic Nodes

构建动态节点的技巧之一是确保您在每个级别的每个节点上进行foreach,但将其添加到节点顶部收藏。

 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() 

家的情况下>事件>马拉松>墨尔本马拉松