Umbraco - 按类型获取 属性
Umbraco - Get Property by type
我是 Umbraco 的新手,所以这甚至可能不可行。我已经使用 Archetype 创建了自己的数据类型,并希望能够按类型而不是别名在页面上获取该类型的实例。
我知道我可以做到以下几点:
model.Content.GetPropertyValue("myAlias")
但是我想知道按类型获取属性是否可行。大致如下:
model.Content.GetPropertiesByType("TypeName")
哪个 return 该类型页面上的控件列表?
这样可行吗?
这是可能的,但并不完全直接。
查看可用的 Umbraco 数据服务 - 您需要从 DataTypeService
检索 DataTypeDefinitions 并使用 ContentTypeService
检索模型的 IPublishedContent 的 ContentType
。
获得这些后,您可以根据 PropertyType
的 DataTypeDefinitionId
将 ContentType
上的 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>
}
我是 Umbraco 的新手,所以这甚至可能不可行。我已经使用 Archetype 创建了自己的数据类型,并希望能够按类型而不是别名在页面上获取该类型的实例。 我知道我可以做到以下几点:
model.Content.GetPropertyValue("myAlias")
但是我想知道按类型获取属性是否可行。大致如下:
model.Content.GetPropertiesByType("TypeName")
哪个 return 该类型页面上的控件列表?
这样可行吗?
这是可能的,但并不完全直接。
查看可用的 Umbraco 数据服务 - 您需要从 DataTypeService
检索 DataTypeDefinitions 并使用 ContentTypeService
检索模型的 IPublishedContent 的 ContentType
。
获得这些后,您可以根据 PropertyType
的 DataTypeDefinitionId
将 ContentType
上的 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>
}