Glassmapper Sitecore 多列表字段为空

Glassmapper Sitecore Multilist field is empty

您好,我正在使用 glassmapper,我正在尝试读取多列表中的所有项目并进行填充。
我的页面有一个导航、标题和一个多列表字段,我可以在其中 select 项目。我的问题是,虽然我能够读取子项(计数 > 0),但 属性 值为空。但是 Sitecore 的基本 Item 属性不为空 Fieldtype 没有解决问题 这是我的两个模型

     public class Pagebase: ItemBase, INavigation
    {
        //Page Base

        public string PageTitle { get; set; }
        public string PageHeading { get; set; }

    //Navigation
        public string NavigationTitle { get; set; }
        public string NavigationDescription { get; set; }
    public IEnumerable<Pagebase> SubItems{ get; set; }
    }

[SitecoreType(TemplateId = "{7BC902B5-305B-484A-9AD9-6AAEBA48BDD7}", AutoMap = true)]
public interface INavigation 
{

    [SitecoreField("Navigation Title")]
        string NavigationTitle { get; set; }

        [SitecoreField("Navigation Description")]
        stringNavigationDescription { get; set; }

    [SitecoreField("Sub Items")]
        IEnumerable<Pagebase> SubItems{ get; set; }

}

我的看法是这样的

    @inherits Glass.Mapper.Sc.Web.Mvc.GlassView<xxx.Pagebase>

    <div class-"test"> 
@Model.NavigationTitle // This has value 
@Model.NavigationDescription // This has correct value
@Model.SubItems.Count // Show the correct number of Items selected in Multi list. 

// The multilist is again a Pagebase type. 
//When i do : 
    @foreach (var subItem in Model.SubItems)
                            {
    @subItem.NavigationTitle            //This is null
    @subItem.NavigationDescription  // This is null 
    @@subitem.Id / @subitem.Url / @subitem.Name /  // This is not null 
    }
    </div>   

我错过了什么??

在接口的实现 class 中,您需要将所有属性标记为虚拟。

另见 documentation of glassmapper

还有 和 glassmapper。

因此,您的实施 class 将如下所示

public class Pagebase: ItemBase, INavigation
{
    //Page Base
    public virtual string PageTitle { get; set; }
    public virtual string PageHeading { get; set; }

   //Navigation
    public virtual string NavigationTitle { get; set; }
    public virtual string NavigationDescription { get; set; }
    public virtual IEnumerable<Pagebase> SubItems{ get; set; }
}