我们如何避免这种行为,以便如果在通用链接字段上设置了链接描述,那么它会采用该值而不是回退到项目名称?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>());
页面编辑器不尊重这一点。看起来它正在使用不同的技术来解决依赖关系。