【问题标题】:Using glass mapper to map droplink field in Sitecore使用玻璃映射器在 Sitecore 中映射 droplink 字段
【发布时间】:2018-04-20 17:02:21
【问题描述】:

有没有人使用 GlassMapper 在 Sitecore 中映射复杂的字段类型? Glass 似乎可以很好地处理字符串字段,但 Sitecore 中的 Droplinks、Droplists 或其他类型不会映射到模型中。 DropLink 没有字段类型。有一个 LookupField,但它不适用于下拉链接或下拉列表。

【问题讨论】:

    标签: model sitecore glass-mapper


    【解决方案1】:

    在您的用例中,在 GlassMapper 中实现这一点实际上非常简单。

    下拉列表将仅存储已选择项目的名称 - 因此最好将其映射到字符串。

    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; }
    }
    

    您可以对其他复杂的字段类型使用类似的策略。例如,任何类型的 Multilist 字段,例如树列表可以用IEnumerable<MyLinkedItem> 表示。

    【讨论】:

    • 我不清楚这将如何提供 droplink 字段的属性?它似乎只是一个 GUID。感谢您的意见。
    • droplink 字段将存储您已链接的项目的 ID,因此 Glass 在链接类型上所需的所有内容都是 Guid,它可以从中获取链接的项目。要访问您要链接的项目的其他字段,您需要将这些字段添加到上面示例中的链接项目的类中。
    • 这个解决方案对我有用。切记不要在从 DropList 字段类型切换到 DropLink 字段类型时不要忘记在 CMS 中重新选择下拉选项,否则会报错“该字段包含的值不在选择列表中。”并且您的字段将无法正确映射。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多