2016-09-21 2 views
0

저는 Umbraco를 처음 접했습니다. 5 개의 루트 노드가 있고 그 루트 노드 내에 포함 된 임의 페이지 목록이 있습니다. 이 페이지에서 수신하는 데이터는 NodeId, NodeName 및 Level입니다. 내가하려는 것은 내가 가지고있는 각각의 페이지에 대한 루트 노드 정보를 얻는 것이다. 불행히도 이것이 내가 문제를 얻는 곳입니다. NodeId를 기반으로 루트 노드 또는 레벨 1 노드의 정보를 얻을 수있는 방법이 있습니까?Umbraco : 노드 ID를 기반으로 루트 노드 ID를 얻으십시오.

이것은 내가 지금까지있어 무엇 :

foreach (var item in pages) 
{ 
    int level = item["level"].AsInt(); 
    if (level > 1){ 
     var currentItem = library.GetCurrentDomains(item.Id); 
    } 
} 

필자 library.GetCurrentDomains (item.Id) 그러나이 나던 작업을 시도했다. 이 필요한 것입니다 않으며이 가장 좋은 방법이지만, 경우에 당신이 어떤 노드의 두 번째 수준 "루트"를 얻을 수

item.Path.Split(',')[1] 

처럼 뭔가를 할 수 있다면

+0

더 많은 코드와 컨텍스트를 공유하십시오. 이 데이터를 처음으로 가져 오는 방법 (ID)과 Umbraco 래퍼를 사용하여 문서의 동적 또는 형식이 지정된 개체를 가져 오지 않고 Parent/AncestorOrSelf 등의 도우미 메서드를 사용하여 XML 캐시를 통과하는 기능을 사용하는 이유는 무엇입니까? –

답변

1

완전히 확실하지. 생각해 보면 ;-)

0

랜덤 페이지 목록이 모두 IPublishedContent 인 경우 페이지의 루트 노드를 가져올 페이지에서 AncestorOrSelf (1) 확장 메서드를 사용할 수 있습니다. 예 :

foreach (var item in pages) 
{ 
    var rootPage = item.AncestorOrSelf(1); 

    //do something with the root node here 
}