Свойство набора Sitecore Droplink не работает

Я создал модели Glassmapper для всех элементов, у меня есть ссылка в одном из моих элементов Sitecore. Ниже приведена модель элемента с полем droplink.

    [SitecoreClass]
   public class Field:BaseItem
    {
        [SitecoreField("Mapper Item")]
        public virtual LinkedItem MapperItem { get; set; }                
    }

Поле Mapper Item — это поле ссылки в sitecore, класс BaseItem имеет все базовые свойства sitecore, такие как:

        [SitecoreId]
    public virtual Guid Id { get; set; }

    [SitecoreInfo(SitecoreInfoType.Name)]
    public virtual string Name { get; set; }

    [SitecoreInfo(SitecoreInfoType.DisplayName)]
    public virtual string DisplayName { get; set; }

    [SitecoreInfo(SitecoreInfoType.Url)]
    public virtual string Url { get; set; }

    [SitecoreInfo(SitecoreInfoType.Path)]
    public virtual string Path { get; set; }

    [SitecoreInfo(SitecoreInfoType.ContentPath)]
    public virtual string ContentPath { get; set; }

    [SitecoreInfo(SitecoreInfoType.TemplateId)]
    public virtual Guid TemplateId { get; set; }

    [SitecoreInfo(SitecoreInfoType.TemplateName)]
    public virtual string TemplatedName { get; set; }

    [SitecoreField("__created")]
    public virtual DateTime Created { get; set; }

    [SitecoreField("__updated")]
    public virtual DateTime Updated { get; set; }

и LinkedItem имеет следующие свойства:

[SitecoreClass]
public class LinkedItem:BaseItem
{
    [SitecoreField("Field ID")]
    public virtual string FieldID { get; set; }
    [SitecoreField("Display Name")]
    public virtual string DisplayName { get; set; }
    [SitecoreField("Field Type")]
    public virtual string FieldType { get; set; }
}

Я получаю объект LinkedItem в свойстве MapperItem, когда я обращаюсь к объекту Field, но если я пытаюсь установить свойство MapperItem, он не сохраняет его в соответствующем поле (поле Mapper Item), но я не получаю никакой ошибки .

Я использую следующий код для установки дроплинка

fieldItem.MapperItem = ItemUtility.GetItem<LinkedItem>(new Guid("some valid guid available in the droplist source"));

person Bevin    schedule 03.04.2015    source источник
comment
См. Должны ли вопросы включать «теги» в свои заголовки? , где консенсуса нет, не должны!   -  person    schedule 03.04.2015
comment
Следуете ли вы инструкциям здесь glass.lu/Mapper/Sc/Tutorials/Tutorial11 ? Также вам необходимо установить атрибут SitecoreType в вашем классе LinkedItem, что-то вроде [SitecoreType (TemplateId = GUID HERE, AutoMap = true)]   -  person Ahmed Okour    schedule 03.04.2015
comment
@AhmedOkour: Но SitecoreType недоступен, доступен атрибут SitecoreClass.   -  person Bevin    schedule 03.04.2015
comment
Вы добавили это пространство имен? используя Glass.Mapper.Sc.Configuration.Attributes?   -  person Ahmed Okour    schedule 03.04.2015
comment
Добавлено Glass.Sitecore.Mapper.Configuration.Attributes, Glass.Mapper.Sc.Configuration.Attributes недоступно.   -  person Bevin    schedule 03.04.2015
comment
Какую версию Glass Mapper вы используете?   -  person Ahmed Okour    schedule 04.04.2015


Ответы (1)


Похоже, у вас старая версия картографа Glass? Попробуйте добавить ссылку на шаблон следующим образом:

[SitecoreClass(TemplateId = "{5281CBCF-1A2D-413A-B182-2854FC6B9176}")]

В новейшей версии он должен быть установлен следующим образом:

  • Пространство имен должно быть: using Glass.Mapper.Sc.Configuration.Attributes;

  • Классы должны иметь атрибут: [SitecoreType(AutoMap = true)]

Эта ссылка содержит хороший скриншот правильной реализации вышеизложенного: http://www.glass.lu/en/Mapper/Sc/Tutorials/Tutorial11.aspx

Что нужно проверить:

  • Установлен ли правильный пакет nuget/можете ли вы установить последнюю версию?: http://www.glass.lu/en/Mapper/Sc/Tutorials/Tutorial1.aspx

  • Является ли имя поля «Элемент сопоставления» уникальным? Если нет, то Sitecore/Glass выберет первый найденный, но не всегда правильный.

person Jason Horne    schedule 04.04.2015