Umbraco - 按类型获取 属性

Umbraco - Get Property by type

我是 Umbraco 的新手,所以这甚至可能不可行。我已经使用 Archetype 创建了自己的数据类型,并希望能够按类型而不是别名在页面上获取该类型的实例。 我知道我可以做到以下几点:

model.Content.GetPropertyValue("myAlias")

但是我想知道按类型获取属性是否可行。大致如下:

model.Content.GetPropertiesByType("TypeName")

哪个 return 该类型页面上的控件列表?

这样可行吗?

这是可能的,但并不完全直接。

查看可用的 Umbraco 数据服务 - 您需要从 DataTypeService 检索 DataTypeDefinitions 并使用 ContentTypeService 检索模型的 IPublishedContent 的 ContentType

获得这些后,您可以根据 PropertyTypeDataTypeDefinitionIdContentType 上的 PropertyTypes 与检索到的 DataTypeDefionitions 进行匹配.

PropertyTypes 有一个 Alias 属性,它将与内容本身的 属性 别名匹配。

如果您在 edit/create 数据类型时获取试图从 url 中找到其倍数的数据类型的 ID,则可以使用内容服务。

   @foreach (var p in ApplicationContext.Current.Services.ContentService.GetById(Model.Content.Id).PropertyTypes.Where(p => p.DataTypeDefinitionId == -89))
        {
            <p>@p.DataTypeDefinitionId</p>
        }