2013-02-27 78 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() 

家的情況下>事件>馬拉松>墨爾本馬拉松