Razor Glassmapper Sitecore多列表字段为空

Razor Glassmapper Sitecore多列表字段为空,razor,model-view-controller,sitecore,glass-mapper,tds,Razor,Model View Controller,Sitecore,Glass Mapper,Tds,您好,我正在使用glassmapper,我正在尝试读取多重列表中的所有项目并进行填充。 我的页面有一个导航、标题和多列表字段,我可以在其中选择项目。我的问题是,虽然我能够读取子项(计数>0),但属性值为空。但Sitecore的基本项属性不为null Fieldtype没有解决问题 这是我的两个模型 public class Pagebase: ItemBase, INavigation { //Page Base public string P

您好,我正在使用glassmapper,我正在尝试读取多重列表中的所有项目并进行填充。
我的页面有一个导航、标题和多列表字段,我可以在其中选择项目。我的问题是,虽然我能够读取子项(计数>0),但属性值为空。但Sitecore的基本项属性不为null 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; }

}
公共类Pagebase:ItemBase,INavigation
{
//页基
公共字符串PageTitle{get;set;}
公共字符串页标题{get;set;}
//航行
公共字符串导航标题{get;set;}
公共字符串NavigationDescription{get;set;}
公共IEnumerable子项{get;set;}
}
[SitecoreType(TemplateId=“{7BC902B5-305B-484A-9AD9-6AAEBA48BDD7}”,AutoMap=true]
公共接口失效
{
[SitecoreField(“导航标题”)]
字符串导航标题{get;set;}
[SitecoreField(“导航说明”)]
stringNavigationDescription{get;set;}
[SitecoreField(“子项”)]
IEnumerable子项{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>   
@继承Glass.Mapper.Sc.Web.Mvc.GlassView
@Model.NavigationTitle//这有价值
@Model.NavigationDescription//此值正确
@Model.SubItems.Count//显示多列表中所选项目的正确数量。
//多重列表也是一种页面基类型。
//当我这样做时:
@foreach(Model.SubItems中的var子项)
{
@subItem.NavigationTitle//这是空的
@subItem.NavigationDescription//这是空的
@@subitem.Id/@subitem.Url/@subitem.Name///此值不为空
}

我错过了什么

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

另见

还有glassmapper

因此,您的实现类将如下所示

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; }
}
公共类Pagebase:ItemBase,INavigation
{
//页基
公共虚拟字符串PageTitle{get;set;}
公共虚拟字符串页标题{get;set;}
//航行
公共虚拟字符串导航标题{get;set;}
公共虚拟字符串导航说明{get;set;}
公共虚拟IEnumerable子项{get;set;}
}

我认为您的Pagebase类需要SitecoreType属性。另外,请确保您已经发布了您创建的所有模板和字段。@如果是这样的话-我甚至不应该获取基本项的值。我得到的基本项的所有值都非常好。Model.NavigationTile只起作用。只有在多重列表中才会出现故障。没有人知道这一点吗?请尝试将您的属性设置为
virtual
,例如
public virtual string NavigationTitle{get;set;}
,谢谢大家。我找到了原因。虚拟是一个原因。但即使在@jammykam提出这个建议后,它也没有起作用。那是因为我犯了一个愚蠢的错误。我用了droplist而不是droplink。我没有意识到这一点,直到我检查回模板。我把jammykam标记为答案,因为他先回答了。