1

我有一个局部视图,用于在我的 MvcSitemap 中渲染出 MvcSiteMapNodes 的子集。

但是我在迭代 MvcSiteMap 节点时遇到了麻烦。

如果我使用;

var nodes = new MvcSiteMapProvider.Web.Html.Models.SiteMapHelperModel();

它返回一个空集合。

你如何迭代 MvcSiteMapNodes?

4

3 回答 3

0

在 v4 中,位置已更改,因为不再使用 Microsoft 站点地图提供程序。也不再需要投射。

var nodes = MvcSiteMapProvider.SiteMaps.Current.CurrentNode.RootNode.ChildNodes;
foreach (var node in nodes)
{
   // Do something with the node's values - no need to cast anymore.
}
于 2013-08-10T14:23:16.320 回答
0

通过使用以下方法解决了这个问题;

var nodes = SiteMap.CurrentNode.RootNode.ChildNodes;
        foreach(SiteMapNode node in nodes)
        {
            MvcSiteMapProvider.MvcSiteMapNode mvcNode = (MvcSiteMapProvider.MvcSiteMapNode)node;
于 2013-07-02T10:08:36.513 回答
0

对我有用的几乎是@NightOwl888 的解决方案,但没有CurrentNode

var nodes = MvcSiteMapProvider.SiteMaps.Current.RootNode.ChildNodes;
foreach (var node in nodes)
{
   // ...
}

奖励:您还可以使用 LINQ 来遍历节点树的某些部分/子集,例如:

var projectNode = MvcSiteMapProvider.SiteMaps.Current.RootNode.ChildNodes.Where(n => n.Key == "Projects").FirstOrDefault();
于 2016-09-04T03:15:08.600 回答