我完全不知道为什么这不起作用。我有一个类,其中包含其他类的列表作为它的属性:
public class Widget
{
....
public virtual IEnumerable<WidgetButton> Buttons { get; set; }
}
[SitecoreType(TemplateId = "{B615973D-59F6-437E-9827-BA3A40068C69}", AutoMap =true)]
public class WidgetButton : BasePage
{
[SitecoreField]
public virtual string Title { get; set; }
}
我的sitecore项目有一个TreeListEx,其中包含一个项目:
我正在读这个项目:
Widget widgetTest = SitecoreContext.GetItem<Widget>(new Guid("{4FF5B96F-9606-4581-95F7-B6A7BAA4C28F}"));
我的Widget
(widgetTest
)包含sitecore以外的所有数据,但按钮!? Buttons属性只是一个空列表。我错过了什么我已经尝试了几种配置,发布等。根据Glass.Mapper tutorials这应该有效
Glass.Mapper.Sc.CastleWindsor.config
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<pipelines>
<initialize>
<processor type="RR.Web.Website.App_Start.GlassMapperSc, RR.Web.Website" />
</initialize>
</pipelines>
</sitecore>
</configuration>
Glass.Mapper.Sc.Mvc.Config
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<settings></settings>
<pipelines>
<mvc.getModel>
<processor type="Glass.Mapper.Sc.Pipelines.Response.GetModel, Glass.Mapper.Sc.Mvc"/>
</mvc.getModel>
</pipelines>
</sitecore>
</configuration>
直接访问sitecore我可以获得我的项目:
Sitecore.Data.Database context = Sitecore.Context.Database;
var item = context.GetItem(new ID("{4FF5B96F-9606-4581-95F7-B6A7BAA4C28F}"));
item
包含一个名为Buttons
的字段,此字段的value
是树状列表({3C18BF9F-9906-4807-83B9-73CA08E61C39}
)中项目的GUID。
如果我直接查询,我可以看到按钮:
var buttonItem = context.GetItem(new ID("{3C18BF9F-9906-4807-83B9-73CA08E61C39}"));
所以一切看起来都很好!为什么没有玻璃映射器映射这个?
答案 0 :(得分:1)
我有一个解决方案,不要问我为什么会这样,因为我通过反复试验找到了它。基本上这样做似乎使它工作:
[SitecoreType(AutoMap =true)]
public class Widget
{
....
[SitecoreField(FieldType =SitecoreFieldType.TreelistEx)]
public virtual IEnumerable<WidgetButton> Buttons { get; set; }
}
具体来说,我认为指定FieldType
。