我有一个局部视图,我用它来渲染我的MvcSitemap中的MvcSiteMapNodes的子集。
但是我在迭代MvcSiteMap节点时遇到了麻烦。
如果我使用;
var nodes = new MvcSiteMapProvider.Web.Html.Models.SiteMapHelperModel();
它返回一个空集合。
如何迭代MvcSiteMapNodes?
答案 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();