Sitecore Glass Mapper ObjectToSwitchTo页面编辑器中的空引用

时间:2014-03-02 15:38:38

标签: sitecore sitecore7 glass-mapper

我在visual studio中有以下结构作为模板:

在页面下,我有一个或多个链接根

[SitecoreType(TemplateId = "{4AAA9A10-36C2-484F-A648-2BEF349F0052}", AutoMap = true)]
public class LinkRoot : IBaseTemplate
{
    [SitecoreChildren(InferType = true)]
    public virtual IEnumerable<LinkItem> Children { get; set; }

    [SitecoreInfo(SitecoreInfoType.TemplateId)]
    public virtual Guid TemplateId { get; set; }
    public Guid Id { get; set; }
    public string Language { get; set; }
    public ItemUri Uri { get; set; }
    public int Version { get; private set; }


}

在链接根目录下我是LinkItems

[SitecoreType(AutoMap = true)]
public class LinkItem : IBaseTemplate
{
    [SitecoreField("Link Name")]
    public virtual string LinkName { get; set; }

    [SitecoreField("Link")]
    public virtual Link Link { get; set; }

    public Guid Id { get; set; }
    public string Language { get; set; }
    public ItemUri Uri { get; set; }
    public int Version { get; private set; }
}

我在这样的视图中显示这些项目:

 @foreach (var link in Model.Children.Where(o => o.TemplateId.Equals(TemplateIDs.LinksRoot.Guid)))
    {
        foreach (var linkChildren in link.Children)
        {
            using (BeginRenderLink(linkChildren, x => x.Link, isEditable: true))
            {
        @Editable(linkChildren, x => x.LinkName)
            }
        }
    }

它工作得很好,我可以看到我的好名字等链接,但是当我去页面编辑器时我得到了这个错误:

  

值不能为空。参数名称:objectToSwitchTo

     

at Sitecore.Diagnostics.Assert.ArgumentNotNull(Object argument,String argumentName)     在Sitecore.Common.Switcher 2.Enter(TValue objectToSwitchTo) at Sitecore.Data.Items.ContextItemSwitcher..ctor(Item item) at Glass.Mapper.Sc.GlassHtml.MakeEditable[T](Expression 1字段,Expression`1 standardOutput,T模型,对象参数,上下文上下文,数据库数据库,TextWriter编写器)

有人已经体验过这个或者知道我为什么会出现这个错误吗?

由于

2 个答案:

答案 0 :(得分:0)

我认为这意味着Glass无法解析LinkItem模型的模板 而不是:

[SitecoreType(AutoMap = true)]
public class LinkItem : IBaseTemplate

尝试明确定义模板ID:

[SitecoreType(TemplateId = "{your-template-guid}", AutoMap = true)]
public class LinkItem : IBaseTemplate

答案 1 :(得分:0)

我认为这可能是一个错误,你可以将它作为一个问题记录在github上。