Как мы можем избежать этого поведения, чтобы, если в поле 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>());
Редактор страниц не соблюдает это. Похоже, он использует другую технику для разрешения зависимости.