如何使用Razor Archetype?

时间:2016-01-05 23:47:07

标签: razor umbraco umbraco7 archetypes

我无法相信我在网上找不到例子。

这是我简单的原型。 My Archetype

这就是我的尝试:

<img src="@CurrentPage.ctaTopLeft.image" alt="@CurrentPage.ctaTopLeft.text">

但它会出现此错误:

  

'Archetype.Models.ArchetypeModel'不包含'image'的定义

编辑:这有效:

<img src="@CurrentPage.GetPropertyValue("ctaTopLeft").Fieldsets[0].GetValue("image")" alt="@CurrentPage.GetPropertyValue("ctaTopLeft").Fieldsets[0].GetValue("text")">

想知道是否有更短的写作方式?

2 个答案:

答案 0 :(得分:4)

嗯,没有 - 一个Archetype属性可以在集合中经常有一组复杂的嵌套数据,这些集合也可以嵌套。实际上,如果你有例如嵌套的Archetype属性(它会发生),那么使用相应的嵌套局部视图集就可以正常渲染它。

有一些教程/样本可用于此类事情:

还有其他软件包可以帮助您将Archetype属性映射到POCO - 例如https://our.umbraco.org/projects/developer-tools/archetype-mapper/

答案 1 :(得分:3)

我更喜欢获取属性的打字方式。

var property = Model.Contet.GetPropertyValue<ArchetypeModel>("yourArchetypePropertyAlias");

if (property != null && property.Any()) {
    foreach (var item in property) {
        var imageId = item.GetValue<int>("yourImagePropertyAlias");
        var text = item.GetValue<string>("yourTextPropertyAlias");
    }
}