为什么我的 Enumerable 没有被 Glass.Mapper 填充?

Why isn't my Enumerable getting populated by Glass.Mapper?

我完全不明白为什么这不起作用。我有一个 class 和其他 classes 的列表作为它的 属性:

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 是树列表中项目的 GUID ({3C18BF9F-9906-4807-83B9-73CA08E61C39})。

如果我直接查询这个我可以看到按钮:

var buttonItem = context.GetItem(new ID("{3C18BF9F-9906-4807-83B9-73CA08E61C39}"));

所以一切看起来都很好!为什么玻璃映射器不映射这个?

我有一个解决方案,不要问我为什么这有效,因为我是通过反复试验找到的。基本上这样做似乎使它起作用:

[SitecoreType(AutoMap =true)]
public class Widget
{
     ....
     [SitecoreField(FieldType =SitecoreFieldType.TreelistEx)]
     public virtual IEnumerable<WidgetButton> Buttons { get; set; }
}

具体来说,我想指定 FieldType