2016-07-19 2 views
2

Я пытаюсь получить коллекцию всех дочерних страниц, которые находятся в папке под страницей. Тем не менее, я борюсь с этим, а CurrentPage.Children возвращает элемент папки (как и ожидалось).Как получить ребенка ребенка? Umbraco CMS

Example Screenshot

Я пытаюсь получить весь пакет (будь то внутренний или международный не имеет значения, просто делаю это лучше для редакторов контента для ввода контента) и отображать несколько полей из полного пакета документов типа на страницу пакетов.

Каков наилучший и опрятный способ, которым я могу это достичь?

Спасибо, Вишал

+0

Вы должны попробовать 'CurrentPage.Children.SelectMany (с => c.Children)' –

+0

выдает ошибку о том, "не может вызвать лямбда-выражения непосредственно". Можете ли вы опубликовать пример того, как вы рекомендуете его использовать? Я попробовал «var selection = CurrentPage.Children.SelectMany (c => c.Children);» но, похоже, не работает –

+0

Что делать, если вы замените CurrentPage на Model.Content? –

ответ

2

Один из способов - получить al descedants и фильтр на странице Level.

@{ 
    foreach (var childchild in CurrentPage.Descendants().Where("Level == " + (CurrentPage.Level+2))) 
    { 
    <h2>@childchild.Level @childchild.Name</h2> 
    } 
} 

Также можно фильтровать по типу документа, чтобы убедиться, что у вас есть только тот тип, который вы хотите. (тип документа пакета) Добавьте что-нибудь подобное. .Where("DocumentTypeAlias == \"Package\"")

Комбинированный:

.Where("DocumentTypeAlias == \"Package\" && Level == " + (CurrentPage.Level+2)) 
+0

Спасибо за этот ответ. Он работает так, как ожидалось. Еще одна вещь. Я хотел бы сделать это более строго типизированным, как вы упомянули только для определенных типов документов. Как добавить дополнительное условие в предложение where? Я попытался .Where ("Level ==" + (CurrentPage.Level + 2) + "&& DocumentTypeAlias ​​== \" Package \ "") Просто хотел знать, правильно ли это? Я правильно помету ваш ответ, как только он будет отсортирован. Большое спасибо –

+0

С 2 Вот так: CurrentPage.Descendants(). Где ("DocumentTypeAlias ​​== \" Pagina \ ""). Где ("Level ==" + (CurrentPage.Level + 2)) –

+0

Это также должно work CurrentPage.Descendants(). Где ("DocumentTypeAlias ​​== \" Package \ "&& Level ==" + (CurrentPage.Level + 2))) –

1

я получил путь вокруг, но не самый лучший, так что все еще ищет хорошие ответы. Я использовал следующее:

foreach (var item in CurrentPage.Children) 
{ 
    foreach (var package in item.Children()) 
    { 
     <h2>@package.PackageName</h2> 

    } 

} 
Смежные вопросы