如何迭代MvcSiteMapNode

时间:2013-07-02 08:53:11

标签: asp.net-mvc-4 mvcsitemapprovider

我有一个局部视图,我用它来渲染我的MvcSitemap中的MvcSiteMapNodes的子集。

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

如果我使用;

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

它返回一个空集合。

如何迭代MvcSiteMapNodes?

3 个答案:

答案 0 :(得分:0)

使用以下内容解决了这个问题;

var nodes = SiteMap.CurrentNode.RootNode.ChildNodes;
        foreach(SiteMapNode node in nodes)
        {
            MvcSiteMapProvider.MvcSiteMapNode mvcNode = (MvcSiteMapProvider.MvcSiteMapNode)node;

答案 1 :(得分: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.
}

答案 2 :(得分:0)

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

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

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

var projectNode = MvcSiteMapProvider.SiteMaps.Current.RootNode.ChildNodes.Where(n => n.Key == "Projects").FirstOrDefault();