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

时间:2014-10-21 06:23:17

标签: c# asp.net umbraco umbraco7

我正在使用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>
 }

Fieldset的类型为{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'来自第二行

2 个答案:

答案 0 :(得分:2)

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

E.g。

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>

答案 1 :(得分:1)

在我的情况下,我做了同样的事情,想要确保第一个原型在获得所有其他原型之前已经获得了它的第一个值,所以我如何解决它是通过创建一个原型的var(这将给出你是一个或多个的列表然后得到第一个并检查其值如下;

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

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