Sitecore 对于玻璃贴图器,如果“常规链接”字段选择了“内部链接”,则玻璃贴图器将使用项目名称作为链接文本

Sitecore 对于玻璃贴图器,如果“常规链接”字段选择了“内部链接”,则玻璃贴图器将使用项目名称作为链接文本,sitecore,glass-mapper,Sitecore,Glass Mapper,我们如何避免这种行为,以便如果在“常规链接”字段上设置了链接描述,那么它将接受该值,而不会回退到项目名称?Glass Mapper正在“常规链接”字段中使用目标项目的项目名称作为内部链接类型。这种行为是由于以下原因造成的 case "internal": var urlOptions = Utilities.CreateUrlOptions(config.UrlOptions); if (linkField.TargetItem =

我们如何避免这种行为,以便如果在“常规链接”字段上设置了链接描述,那么它将接受该值,而不会回退到项目名称?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>());
container.Register(Component.For().ImplementedBy().LifestyleCustom());

页面编辑器不尊重这一点。看起来它正在使用不同的技术来解决依赖关系。

这实际上是Sitecore的默认行为。所以玻璃实际上是在做正确的事情。我必须做一些其他的技巧来适应我的情况

这实际上是Sitecore的默认行为。所以玻璃实际上是在做正确的事情。我必须做一些其他的技巧来适应我的情况。此问题可以结束。回答您自己的问题可能有助于其他可能遇到相同(或类似)问题的人。