我们如何避免这种行为,以便如果在“常规链接”字段上设置“链接描述”,那么它是否采用该值而不是回退到项目名称? 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类中的。我能够覆盖此类,然后注册Component以使用新的重写类来避免此行为。但是这在页面编辑器中不起作用,并且它不使用已使用下面的代码注册的新重写类
container.Register(Component.For<Glass.Mapper.AbstractDataMapper>().ImplementedBy<MyProjectSitecoreFieldLinkMapper>().LifestyleCustom<NoTrackLifestyleManager>());
页面编辑器不尊重这个。看起来它正在使用不同的技术来解决依赖关系。
答案 0 :(得分:1)
这实际上是Sitecore的默认行为。所以Glass实际上做的是正确的。我必须做一些其他的技巧,使它适用于我的情况。