有没有人用过GlassMapper来映射Sitecore中的复杂字段类型? Glass似乎适用于字符串字段,但Sitecore中的Droplinks,Droplists或其他类型不会映射到模型中。 DropLink没有字段类型。有一个LookupField,但它不适用于droplinks或droplists。
答案 0 :(得分:0)
在您的用例中,在GlassMapper中实现此功能实际上非常简单。
droplist只会存储已选择项目的名称 - 因此最好将其映射到字符串。
Droplink存储要链接的项目的ID。您可以使用已创建的类型来表示链接的项目,并且Glass足够智能,可以通过ID在Sitecore中查找项目,然后将其强制转换为您所使用的任何类型。如果在droplink中没有选择任何项目,它将返回null。
举例说明:
[SitecoreType(TemplateId = "{149FA0C9-1111-1111-1111-FD9194EAC887}", AutoMap = true)]
public class MyLinkingItem
{
public Guid Id { get; set; }
//Should be the Name of your Droplink field
public MyLinkedItem LinkedItem { get; set; }
}
[SitecoreType(TemplateId = "{149FA0C9-2222-2222-2222-FD9194EAC887}", AutoMap = true)]
public class MyLinkedItem
{
public Guid Id { get; set; }
}
您可以对其他复杂字段类型使用类似的策略。例如,任何类型的多列表字段,例如Treelist可以用IEnumerable<MyLinkedItem>
表示。