2016-09-16 73 views
4

我已经创建了两个Sitecore模板MenuItem和MainNavigation。 我已经创建了两个接口都基于这些模板至极:从多重表使用Glass.Mapper将Droplist项目映射到复杂类型

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

映射的MenuItems工作。 来自Droplist的映射MenuHeaderItem不是。 在模板中,我在数据源中提供了一个查询,所以只能选择MenuItems。

如何使此映射工作?

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

+0

虽然您不需要设置InferType属性,但您的模型看起来是正确的...请仔细检查您的模板,确定该字段的名称完全是“MenuHeaderItem”,而名称中没有任何空格。 – jammykam

+0

我已经删除了InferType属性,并从模板中复制粘贴属性名称。但映射仍然不起作用。 – Rene

回答

7

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

下拉列表仅将选定的项目名称存储为字符串。 Droplink也存储GUID。

+0

太好了,谢谢! –

1

如果你试图把这个注释(见下文)对未正在填充属性:

[SitecoreField(FieldName = "MenuHeaderItem", FieldType = SitecoreFieldType.Droplist)] 
+0

对不起,它不工作。 – Rene

相关问题