10

基本的に私がやろうとしているのは、ブレッドクラムのリストを作成することです。その動的なリスト (より深いページにドリルダウンすると、パンくずリストのリストが大きくなります) とほとんどのリンクにはパラメーターがあります。MVCSiteInfo を使用した例を見てきましたが、ほとんどの例がパラメーターのない静的なリンクのセットに焦点を当てているため、少し混乱しています。これが一般的な問題ではないとは思えないので、この機能を実現する最善の方法は何かと考えていました。

前もって感謝します!

ジーク

4

1 に答える 1

7

MVC サイトマップ プロバイダーとそこからのパンくずリストを使用することをお勧めします。動的ノード プロバイダーを構築する必要がありますが、それはかなり簡単です。動的ノードを使用する手順に従うだけです。

動的ノードを構築する際の秘訣の 1 つは、各レベルの各ノードで 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()

ホーム > イベント > マラソン > メルボルンマラソン

于 2013-05-17T01:28:24.530 に答える