Razor GlassMapper渲染自定义链接字段

Razor GlassMapper渲染自定义链接字段,razor,sitecore,glass-mapper,sitecore8.1,Razor,Sitecore,Glass Mapper,Sitecore8.1,我们正在使用sitecore 8.1更新3和Glass Mapper 4.2.1.188 对于普通链接字段,它在有经验的编辑器和普通模式下工作良好 我们复制了核心数据库中的常规链接字段,并删除了“Javascript”菜单项。这是我们对自定义链接字段所做的唯一更改 这使得该字段在体验编辑器模式下消失。它在正常模式下很好 @RenderLink(x => x.CallToActionButton, new { @class = "c-btn c-btn--strong c-btn--larg

我们正在使用sitecore 8.1更新3和Glass Mapper 4.2.1.188

对于普通链接字段,它在有经验的编辑器和普通模式下工作良好

我们复制了核心数据库中的常规链接字段,并删除了“Javascript”菜单项。这是我们对自定义链接字段所做的唯一更改

这使得该字段在体验编辑器模式下消失。它在正常模式下很好

@RenderLink(x => x.CallToActionButton, new { @class = "c-btn c-btn--strong c-btn--large" }, isEditable: true)
编辑1:

当我使用Sitecore字段渲染器时,一切都很好

 @Html.Sitecore().Field(FieldIds.HomeCallToActionButton, new { @class = "c-btn c-btn--strong c-btn--large" })

任何建议都将不胜感激。

您出现问题的原因是Sitecore在生成Experience Editor中显示的代码时会检查字段类型键

Sitecore.Pipelines.RenderField.GetLinkFieldValue
类检查字段类型键是否为
link
general link
,并且根据您编写的内容,您复制了原始的
general link
字段,因此该字段的名称是
Custom link
或类似的名称。这意味着字段类型键在您的情况下是
自定义链接
(字段类型名称小写)<代码>跳过处理器方法将
自定义链接
与字段类型键进行比较,由于它不同,处理器会忽略您的字段

您不能简单地将字段重命名为
General Link
并将其置于
field Types/Custom
文件夹下,因为Sitecore不保留字段类型的id(而是存储字段类型键)

您可以做的是重写
Sitecore.Pipelines.RenderField.GetLinkFieldValue类及其类似的方法之一:

使用Sitecore.Pipelines.RenderField;
命名空间My.Assembly.namespace
{
公共类GetLinkFieldValue:Sitecore.Pipelines.RenderField.GetLinkFieldValue
{
/// 
///检查处理器是否不应处理该字段。
/// 
///争论。
///如果该字段不应由处理器处理,则为true;否则为false
受保护的覆盖布尔跳过处理器(RenderFieldArgs args)
{
如果(args==null)
返回true;
字符串fieldTypeKey=args.fieldTypeKey;
if(fieldTypeKey==“自定义链接”)
返回false;
返回base.skippProcessor(args);
}
}
}
并注册它而不是原始类:


My.Assembly.Namespace.GetLinkFieldValue,My.Assembly

@marek Musieklak Sitecore正在正确渲染字段。当我使用Sitecore Field helper时,它在编辑器中的所有体验都很好。它只发生在GlassMapper?还有什么是FieldTypeKey?FieldTypeKey=字段类型名称小写。你试过我上面写的吗?我没有试过你建议的方式,因为sitecore Field helper正确地呈现了它?请看我的编辑问题。玻璃使用的正是我粘贴在它的背景上面。尝试上面的解决方案。