Получение внутренней ссылки с помощью Glass.Mapper

У меня есть внутренняя ссылка, настроенная в 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 нет.

Снимок экрана окна просмотра визуальной студии

Может ли кто-нибудь сказать мне, что я делаю неправильно здесь? Я сейчас в растерянности из-за всей магии, которая происходит за кулисами.


person zeonic    schedule 09.04.2014    source источник
comment
Можете ли вы подтвердить, что в поле установлено значение? Что вы видите, если посмотрите на необработанное значение поля?   -  person Ruud van Falier    schedule 09.04.2014
comment
@RuudvanFalier Я установил точку останова в DoStuff() и посмотрел на параметр, вот что я вижу: i.imgur.com/EtoOGLY.png   -  person zeonic    schedule 10.04.2014


Ответы (1)


Класс Glass.Mapper.Sc.Fields.Link предназначен для работы с полем General 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; }
}
person Michael Edwards    schedule 10.04.2014