基本上我想做的是创建一个面包屑列表。该动态列表(当您深入到更深的页面时,面包屑列表会增加)并且大多数链接都有参数。我见过 MVCSiteInfo 的例子,但有点困惑,因为我见过的大多数例子都集中在一组没有参数的静态链接上。我无法想象这不是一个常见问题,所以我想知道实现此功能的最佳方法是什么。
提前致谢!
西格
基本上我想做的是创建一个面包屑列表。该动态列表(当您深入到更深的页面时,面包屑列表会增加)并且大多数链接都有参数。我见过 MVCSiteInfo 的例子,但有点困惑,因为我见过的大多数例子都集中在一组没有参数的静态链接上。我无法想象这不是一个常见问题,所以我想知道实现此功能的最佳方法是什么。
提前致谢!
西格
我建议您使用MVC Sitemap 提供程序和其中的面包屑路径。您将需要构建一个动态节点提供程序,但这相当简单 - 只需按照使用动态节点的步骤
构建动态节点的技巧之一是确保在每个级别的每个节点上进行 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()
主页 > 赛事 > 马拉松 > 墨尔本马拉松