Для Glass Mapper, если для поля «Общая ссылка» выбрана внутренняя ссылка, то Glass Mapper использует имя элемента для текста ссылки.

Как мы можем избежать этого поведения, чтобы, если в поле General Link установлено описание ссылки, оно принимало это значение, а не возвращалось к имени элемента? Glass Mapper использует имя элемента целевого элемента для типа внутренней ссылки в поле общей ссылки. Такое поведение вызвано нижеследующим

case "internal":
                var urlOptions = Utilities.CreateUrlOptions(config.UrlOptions);
                if (linkField.TargetItem == null) link.Url = string.Empty;
                else link.Url = LinkManager.GetItemUrl(linkField.TargetItem, urlOptions);
                link.Type = LinkType.Internal;
                link.TargetId = linkField.TargetID.Guid;
                link.Text =  linkField.Text.IsNullOrEmpty() ? (linkField.TargetItem == null ? string.Empty : linkField.TargetItem.Name) : linkField.Text;
                break;

в классе SitecoreFieldLinkMapper.cs. Я могу переопределить этот класс, а затем зарегистрировать компонент, чтобы использовать новый переопределенный класс, чтобы избежать такого поведения. Однако это не работает в редакторе страниц и не использует новый переопределенный класс, который был зарегистрирован с использованием приведенного ниже кода.

container.Register(Component.For<Glass.Mapper.AbstractDataMapper>().ImplementedBy<MyProjectSitecoreFieldLinkMapper>().LifestyleCustom<NoTrackLifestyleManager>());

Редактор страниц не соблюдает это. Похоже, он использует другую технику для разрешения зависимости.


person T Malik    schedule 15.10.2014    source источник
comment
На самом деле это поведение Sitecore по умолчанию. Так что Glass на самом деле поступает правильно. Я должен сделать некоторые другие уловки, чтобы заставить его работать с моей ситуацией. Этот вопрос можно закрыть.   -  person T Malik    schedule 16.10.2014
comment
Возможно, стоит ответить на ваш собственный вопрос, чтобы помочь кому-то еще, кто может столкнуться с той же (или похожей) проблемой.   -  person Brad Christie    schedule 16.10.2014


Ответы (1)


На самом деле это поведение Sitecore по умолчанию. Так что Glass на самом деле поступает правильно. Я должен сделать некоторые другие уловки, чтобы заставить его работать с моей ситуацией.

person T Malik    schedule 17.10.2014