2013-02-27 9 views
9

Zasadniczo to, co próbuję zrobić, to utworzyć listę bułek tartych. Ta lista dynamiczna (w miarę przechodzenia do głębszych stron rośnie lista elementów nawigacyjnych) i większość łączy ma parametry. Widziałem przykłady z MVCSiteInfo, ale trochę mylone, ponieważ większość przykładów, które widziałem, skupia się na statycznym zestawie łączy bez parametrów. Nie mogę sobie wyobrazić, że nie jest to częsty problem, więc zastanawiałem się, jaki jest najlepszy sposób na wykonanie tej funkcji.ASP.NET MVC 4 bułka tarta z dynamiczną listą i parametrami

Z góry dziękuję!

Sieg

+1

Czy kiedykolwiek znaleźć rozwiązanie? Szukam czegoś również – dreza

+0

Dreza, Widziałem wiele osób korzystających z SiteMap. Wydaje się, że wykonuje tę pracę, ale wygląda na dość złożoną. Wybrałem po prostu sekcję na stronie, która właśnie wypełniła stosowne linki. Strona układu zawierała główne znaczniki ul dla tej listy. Wydawało mi się prostsze. –

+0

Wiwaty za to. Tak, zajrzałem do mapy strony, a nawet użyłem jej trochę, ale miałem mnóstwo problemów, próbując zmusić ją do pracy, więc nie jestem pewien, czy to jest warte wysiłku. – dreza

Odpowiedz

7

Sugeruję użyć MVC Sitemap provider i miękiszu chleba szlaki od niego. Konieczne będzie zbudowanie dostawcy węzła dynamicznego, ale jest to dość proste - wystarczy wykonać jedną z następujących czynności podczas budowania dynamicznych węzłów, aby upewnić się, że przepłynie się przez każdy węzeł na każdym poziomie, ale dodać go do węzłów. kolekcja u góry.

 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); 
      } 
     } 

a potem to tylko przypadek oddanie bułkę tartą w niczym tego

Html.MvcSiteMap().SiteMapPath() 

domu> Wydarzenia> maratony> Melbourne maraton