使用 Glass.Mapper 将 Droplist 项映射到复杂类型

问题描述 投票:0回答:2

我创建了两个 Sitecore 模板 MenuItem 和 MainNavigation。 我创建了两个基于这些模板的界面:

 [SitecoreType(TemplateId = "{C824E484-F4A6-475C-AFAF-308FF4BBA5A9}", AutoMap = true)]
public interface IMenuItem
{
    string Title { get; set; }
    IEnumerable<IMenuItem> SubMenuItems { get; set; }
}
[SitecoreType(TemplateId = "{68947CC0-7658-4188-889D-4E88B84F3BC2}", AutoMap = true)]
public interface IMainNavigation
{        
    IMenuItem MenuHeaderItem { get; set; }
    
    IEnumerable<IMenuItem> MenuItems { get; set; }
}

来自 MultiList 的映射 MenuItem 正在工作。 来自 Droplist 的映射 MenuHeaderItem 则不是。 在模板中,我在数据源中提供了一个查询,因此只能选择菜单项。

我怎样才能使这个映射工作?

我已经尝试过v4.0.5.54,现在我已经更新到版本4.2.1.188

sitecore glass-mapper
2个回答
9
投票

我自己找到了答案。在模板中,我必须使用 sitecore 类型 Droplink 而不是 DropList

Droplist 仅将所选项目名称存储为字符串。 Droplink 还存储 GUID。


-1
投票

如果您尝试为未填充的属性添加此注释(见下文)会怎样:

[SitecoreField(FieldName = "MenuHeaderItem", FieldType = SitecoreFieldType.Droplist)]
© www.soinside.com 2019 - 2024. All rights reserved.