我怎样才能得到一个节点的孩子?

时间:2014-09-10 09:41:51

标签: umbraco umbraco7

如何在部分视图(剃须刀)中获取新闻项目(在标准项目中)的所有孩子?

我试过了:

@{
    var homePage = CurrentPage.AncestorsOrSelf(1).First();
    var newsItems = homePage.Children.Where(x => x.GetProperty("Name").Value == "News");
}

但是我得到一个错误,指出我不能做lambda表达式,而不是强制转换它。 "新闻"是我的网页中的一个节点,其中包含子节点,我想创建一个列出子节点的宏。如何以及我可以将它投射到什么地方?

2 个答案:

答案 0 :(得分:1)

目前,您正在寻找主页的孩子,名为" News"。我想你想更深入一层。

我推荐这种方法:

// 1- Get root node
var site = Model.Content.AncestorOrSelf("Site");

// 2- Get news node
var news = site.Descendant("News");
var newsItems = news.Children;

在这里,您使用文档类型别名来遍历树,这比使用名称更可靠,因为它们可以更改。这当然可能需要重新修改一些元素。

希望这有帮助!

答案 1 :(得分:0)

尝试此操作以获取所有主页子节点的新闻节点:

var newsItems = homePage.Children.Where("Name = @0", "News");

然后遍历新闻的孩子们:

foreach (var newsChild in newsItems)

如果您已经知道新闻节点的ID,则可以跳过第一步:

var newsNode = Umbraco.Content(1234);

这个页面有很多例子: http://our.umbraco.org/documentation/reference/querying/DynamicNode/Collections#