使用Glass.Mapper获取内部链接

时间:2014-04-09 18:38:46

标签: sitecore sitecore6 glass-mapper

我在Sitecore中设置了一个内部链接,我试图使用Glass.Mapper映射该字段,但它只是一直空着,我不知道是什么我做错了。

Sitecore中的模板非常简单: Screen capture of Sitecore template

链接的来源设置为仅允许基于'系统'要创建的模板。

在我的代码中,我设置了一个对象:

namespace Playground.GlassObjects
{
    public partial class Status
    {
        public virtual string Description { get; set; }
        public virtual string StatusCode { get; set; }
        public virtual Glass.Mapper.Sc.Fields.Link System { get; set; }
    }
}

基本上这样使用的是:

public void DoStuff(Sitecore.Data.Items.Item item)
{
    var status = item.GlassCast<Status>();
    this.DoOtherStuff(status);
}

我遇到的是glassObj.DescriptionglassObj.StatusCode正在按照我想要/期望的方式接线,但glassObj.System不是。

Screen capture of visual studio watch window

谁能告诉我我在这里做错了什么?我现在感到很茫然,所有的魔力都在幕后进行。

1 个答案:

答案 0 :(得分:4)

Glass.Mapper.Sc.Fields.Link类用于处理“常规链接”字段。内部链接字段将值存储为路径,例如/ sitecore / content / home / events。这意味着它与Link类不兼容。

相反,您应该将其映射到您创建的另一个类。

public partial class Status
{
    public virtual string Description { get; set; }
    public virtual string StatusCode { get; set; }
    public virtual MySystem System { get; set; }
}

public class MySystem{

   public virtual string Url { get; set; }
   public virtual string MyField { get; set; }
}