0

我们如何避免这种行为,以便如果在通用链接字段上设置了链接描述,那么它会采用该值而不是回退到项目名称?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>());

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

4

1 回答 1

1

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

于 2014-10-17T02:13:51.377 回答