Razor 需要从实体获取2sxc字段类型

Razor 需要从实体获取2sxc字段类型,razor,dotnetnuke,2sxc,Razor,Dotnetnuke,2sxc,在完成前一个问题的所有工作后,我想清理它,使它更有用/可重用。到目前为止,我正在决定如何使用content type字段names,So attribute.Key在foreach on属性中复制/添加字段。相反,我需要知道实体字段的类型;表示字符串、数字、超链接、实体等 所以我想要一些类似于if(AsEntity(original).FieldType==“HyperLink”){do this this}的东西。我已经浏览了API文档,但没有发现如何获取信息。可能吗 我确实发现attribu

在完成前一个问题的所有工作后,我想清理它,使它更有用/可重用。到目前为止,我正在决定如何使用content type字段names,So attribute.Key在foreach on属性中复制/添加字段。相反,我需要知道实体字段的类型;表示字符串、数字、超链接、实体等

所以我想要一些类似于if(AsEntity(original).FieldType==“HyperLink”){do this this}的东西。我已经浏览了API文档,但没有发现如何获取信息。可能吗

我确实发现attribute.Value有一种类型,我可以用它来回答大多数问题,但Hyperlink和String都显示为System.String

以下是按顺序排列的字符串、超链接、实体和编号:

atts: ToSic.Eav.Data.Attribute`1[System.String]    
atts: ToSic.Eav.Data.Attribute`1[System.String]    
atts: ToSic.Eav.Data.Attribute`1[ToSic.Eav.Data.EntityRelationship]    
atts: ToSic.Eav.Data.Attribute`1[System.Nullable`1[System.Decimal]]

那么,从实体或其属性或对象/方法/属性的其他路径中,是否有一种方法可以只获得字段类型名称的答案?或者,是否有某种包装器可以让我处理(转换成/转换成)超链接?我对其他想法持开放态度。由于
fields.Add()
因“FieldType”不同,这将非常有用。

这有点简单,但由于Razor的动态特性,需要更多的代码。下面是一个示例代码,它应该满足您的需要:

@using System.Collections.Generic;
@using System.Linq;
@using ToSic.Eav.Data;

var type = AsEntity(Content).Type;
var attributes = type.Attributes as IEnumerable<IContentTypeAttribute>;
var typeOfAwards attributes.First(t => t.Name == "Awards").Type; // this will return "Entity"
@使用System.Collections.Generic;
@使用System.Linq;
@使用ToSic.Eav.Data;
变量类型=实体(内容)。类型;
var attributes=type.attributes为IEnumerable;
var typeOfAwards attributes.First(t=>t.Name==“奖励”).Type;//这将返回“实体”
我在这里为您创建了一个快速示例: