1

我在 Sitecore 中设置了一个内部链接,我正在尝试使用 Glass.Mapper 映射该字段,但它总是返回空白,我不确定我做错了什么。

Sitecore 中的模板非常简单: Sitecore 模板的屏幕截图

链接的来源设置为仅允许创建基于“系统”模板的内容的文件夹。

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

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.Description,并且glassObj.StatusCode正在按照我想要/期望的方式连接起来,但glassObj.System不是。

Visual Studio 监视窗口的屏幕截图

谁能告诉我我在这里做错了什么?我现在不知所措,幕后发生的所有魔法。

4

1 回答 1

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; }
}
于 2014-04-10T06:12:15.073 回答