访问页面的各个字段以显示在不同页面上的方法 - Umbraco

Way to access individual fields of pages to display on a different page - Umbraco

我有一个关于如何从预先存在的页面访问字段并将它们显示在不同页面中的问题。

例如,我有一个名为:"People" 的文档类型,我为几个人创建了一个页面,因此我的内容部分的结构如下所示:

Home
    page1
    page2
    page3

People
    person1
    person2
    person3

"People" 使用的文档类型包含以下字段: 姓名、年龄、工作、描述全部为文本框。

您建议访问每个页面的这些字段中的值的最佳方法是什么,这样您就可以遍历父 "People" 下的每个人并显示他们的 name/age/desc?

使用:

  @{
        var selection = Umbraco.TypedContent(1108).Children()
                            .Where(x => x.IsVisible());
    }
    @foreach(var item in selection){

    }

我只能访问每个页面的元数据,例如@item.Id,但我不知道如何访问这些字段,所以说@item.Name returns 人名。

任何帮助将不胜感激!干杯。

您从上面的查询中得到的是您的内容实例 IPublishedContent。对于任何类型的已发布内容,这是一个非常通用的接口,因此您将无法直接访问您在文档类型上定义的特定自定义属性,就像此对象上的普通 C# 属性一样。

但是 - 如果您在您的站点中启用了 ModelsBuilder,您应该能够执行以下操作并让子项作为映射的 POCO 类:

var selection = Umbraco.TypedContent(1108).Children<Person>()

(或 <People> .. 取决于子项的实际文档类型别名的名称)

如果您不使用 ModelsBuilder,您可以选择在 foreach 循环中执行此操作以获取属性值:

var age = item.GetPropertyValue<string>("age");

附注:请将您的 Name 属性 重命名为其他名称(全名或类似名称)。使用 Name 将与用于节点名称的内置 属性 冲突 :)