Sitecore 对于玻璃贴图器,如果“常规链接”字段选择了“内部链接”,则玻璃贴图器将使用项目名称作为链接文本
我们如何避免这种行为,以便如果在“常规链接”字段上设置了链接描述,那么它将接受该值,而不会回退到项目名称?Glass Mapper正在“常规链接”字段中使用目标项目的项目名称作为内部链接类型。这种行为是由于以下原因造成的Sitecore 对于玻璃贴图器,如果“常规链接”字段选择了“内部链接”,则玻璃贴图器将使用项目名称作为链接文本,sitecore,glass-mapper,Sitecore,Glass Mapper,我们如何避免这种行为,以便如果在“常规链接”字段上设置了链接描述,那么它将接受该值,而不会回退到项目名称?Glass Mapper正在“常规链接”字段中使用目标项目的项目名称作为内部链接类型。这种行为是由于以下原因造成的 case "internal": var urlOptions = Utilities.CreateUrlOptions(config.UrlOptions); if (linkField.TargetItem =
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>());
container.Register(Component.For().ImplementedBy().LifestyleCustom());
页面编辑器不尊重这一点。看起来它正在使用不同的技术来解决依赖关系。这实际上是Sitecore的默认行为。所以玻璃实际上是在做正确的事情。我必须做一些其他的技巧来适应我的情况 这实际上是Sitecore的默认行为。所以玻璃实际上是在做正确的事情。我必须做一些其他的技巧来适应我的情况。此问题可以结束。回答您自己的问题可能有助于其他可能遇到相同(或类似)问题的人。