2016-11-25 4 views
0

У меня есть три типа документов и соответствующие им шаблоны. Мое дерево показано ниже.Получить список всех корневых узлов из дочернего узла в Umbraco

1. Video List 
    2. Video Item 
     3. Item Details 

На странице списка видео все элементы в шаблоне видеоматериала. Элемент Подробности - это дочерний узел шаблона видеоматериала. Я хочу, чтобы все узлы в элементе видео на странице сведений о деталях.

Я пробовал приведенный ниже код. Но он показывает, что Xpath нуждается в некоторой ссылке на сборку.

Model.Content.XPath("//*[@isDoc and @level = 1]"); 

Пожалуйста, помогите

ответ

1

Это не сложно. Используйте @Ancestor, а затем @Children в цикле @foreach. Узнайте больше о пересечении с Umbraco на странице Umbraco.

Предполагая, что мы находимся на шаблоне детали объекта (или странице, независимо от того, что вы хотите называть его), и вам нужно перечислить всех ваших родителей и родных родителей (если я правильно понимаю). Таким образом, вы идете в «дедушку и бабушку», и вы просите детей:

@foreach (var item in Model.Content.Ancestor("VideoList").Children) 
    { 
     //do whatever you feel like in the collection. 
     //This foreach loop will list you all the Video Item nodes. 

    } 

P.S. Я предположил, что VideoList - это docTypeAlias, что есть на странице вашего списка видео.

0

я получил одно решение. Вот мой код:

var parentClass = Umbraco.TypedContent(Model.Content.Id).Parent.Parent.Children.Where(x => x.DocumentTypeAlias == "videoItem" && x.IsVisible()); 

Но это правильный способ получить родительские узлы?