2013-07-02 1 views
1

MvcSitemap에서 MvcSiteMapNodes의 하위 집합을 렌더링하는 데 사용하는 부분 뷰가 있습니다.MvcSiteMapNodes를 반복하는 방법

그러나 MvcSiteMap 노드를 반복하는 데 문제가 있습니다.

내가 사용하는 경우;

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

빈 컬렉션을 반환합니다.

MvcSiteMapNodes를 반복하는 방법은 무엇입니까?

답변

0

다음을 사용하여이를 해결했습니다.

var nodes = SiteMap.CurrentNode.RootNode.ChildNodes; 
     foreach(SiteMapNode node in nodes) 
     { 
      MvcSiteMapProvider.MvcSiteMapNode mvcNode = (MvcSiteMapProvider.MvcSiteMapNode)node; 
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. 
} 
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();