首页 > 解决方案 > Umbraco 8 - 使用 ContentAtXPath() 方法获取节点的子节点

问题描述

我一直在重构现有的 Umbraco 项目,以便在取回文档数据时使用更高性能的查询,因为之前所有内容都是使用 LINQ 返回的。我一直在使用 Umbraco 通过 XPaths 和 Examine 进行查询的组合。

我目前很难尝试使用该Umbraco.ContentAtXPath()方法获取子文档。我想做的是根据我解析到该方法的路径获取子文档。这是我目前拥有的:

IEnumerable<IPublishedContent> umbracoPages = Umbraco.ContentAtXPath("//* [@isDoc]/descendant::/About [@isDoc]");

运行此返回“对象引用未设置为对象的实例”。错误并且无法确切地看到我哪里出错了(Umbraco 中这种查询形式的新手)。

理想情况下,我想增强查询以使用非 LINQ 方法进行排序,如此处所示

标签: xpathcontent-management-systemumbracoumbraco8

解决方案


在 Umbraco 8 中查询 NuCache 非常快,仅被检查搜索击败。假设您使用的是 Models Builder,并且您的 About 页面是 Home 页面的子页面,您可以使用:

var homePage = (HomePage) Model.Root();
var aboutPage = homePage?.Children<AboutPage>().FirstOrDefault();
var umbracoPages = aboutPage.Children();

HomePage您的主页文档类型别名在哪里,AboutPage您的关于页面文档类型别名在哪里。


推荐阅读