Umbraco&;原型:只从属性中获取第一个字段集

本文关键字:获取 第一个 字段 从属性 amp 原型 Umbraco | 更新日期: 2023-09-27 18:27:12

我正在使用Archetype属性编辑器,并试图使用foreach只获取第一个字段集:

foreach (var fieldset in Umbraco.Content(5369).GetPropertyValue<Archetype.Models.ArchetypeModel>("myProperty"))
 {
   var icon = Umbraco.TypedMedia(fieldset .GetValue("icon"));
   <img src="@icon.Url" />
   <span>@fieldset.GetValue("iconTitle")</span>
 }

字段集的类型为{Archetype.Models.ArchetypeFieldsetModel}。我怎样才能只得到第一个字段集?

编辑已尝试:

var fieldset = Umbraco.Content(5369).GetPropertyValue<Archetype.Models.ArchetypeModel>("hotelFacilitesIcons").Fieldsets;

这给了我Archetype.Models.ArchetypeModel.Fieldsets' is inaccessible due to its protection level

尝试:

var fieldset = Umbraco.Content(5369).GetPropertyValue<Archetype.Models.ArchetypeModel>("myPropertyAlias");
var facility = fieldset.GetPropertyValue<List<Archetype.Models.ArchetypeFieldsetModel>>("myFieldSetAlias");

这给了我:来自第二行的'Archetype.Models.ArchetypeModel' does not contain a definition for 'GetPropertyValue'

Umbraco&;原型:只从属性中获取第一个字段集

我会尝试为您指明正确的方向。看看我以前参与的一个项目,有一个Archetype.Models.ArchetypeFieldsetModel类型,所以您的内容属性可能会返回Archetype.Models.ArchetypeFieldsetModel的集合,而不是Archetype.Models.ArchetypeModel

例如

var fieldset = Umbraco.Content(5369).GetPropertyValue<List<Archetype.Models.ArchetypeFieldsetModel>>("myProperty").FirstOrDefault();
var icon = Umbraco.TypedMedia(fieldset .GetValue("icon"));
<img src="@icon.Url" />
<span>@fieldset.GetValue("iconTitle")</span>

在我的案例中,我也做了类似的事情。我想确保第一个原型在获得所有其他原型之前已经获得了它的第一个值集,所以我如何绕过它是通过创建一个带有原型的var(它会给你一个或多个原型的列表),然后获得第一个原型并检查它的值,如下所示;

var contentSectionArchtype = Model.Content.GetPropertyValue<ArchetypeModel>("myArchetypeAlias");
        var firstSection = contentSectionArchtype.First();

然后第一部分总是第一个原型,然后我会在循环所有这些原型之前检查它的第一个值,希望这会有所帮助。