Sitecore:项显示名称不支持括号

Sitecore:项显示名称不支持括号,sitecore,Sitecore,我将项目的显示名称从Item1更改为这是新标题 但是,在树中,当关闭显示时,打开显示为编码。 它显示为: (This is the new title) 请问我该怎么修 这是9.3 iirc中引入的一个已知错误。参考号393368。据我所知,目前还没有针对它的修补程序,但您可以通过更换有故障的管道来自己修补它 查看Sitecore.Kernel中的Sitecore.Pipelines.Save.Save类。在深层嵌套流程方法中,您将看到dotPeek反映的代码: if (thi

我将项目的显示名称从Item1更改为这是新标题

但是,在树中,当关闭显示时,打开显示为编码。 它显示为:

(This is the new title)
请问我该怎么修


这是9.3 iirc中引入的一个已知错误。参考号393368。据我所知,目前还没有针对它的修补程序,但您可以通过更换有故障的管道来自己修补它

查看Sitecore.Kernel中的Sitecore.Pipelines.Save.Save类。在深层嵌套流程方法中,您将看到dotPeek反映的代码:

if (this.NeedsHtmlTagEncode(field1))
  field1.Value = WebUtil.SafeEncode(field1.Value);

出于未知原因,NeedsHTMLAgencode为DisplayName返回true。您可以通过将保存处理器替换为继承旧处理器并重写受保护的虚拟bool NeedsHtmlTagEncodeSaveArgs.SaveField字段方法并让其返回false来解决此问题。然后,您只需使用xpath/sitecore/processors/saveUI/processor[@type='sitecore.Pipelines.Save.Save,sitecore.Kernel']修补现有处理器即可。

这是9.3 iirc中引入的已知错误。参考号393368。据我所知,目前还没有针对它的修补程序,但您可以通过更换有故障的管道来自己修补它

查看Sitecore.Kernel中的Sitecore.Pipelines.Save.Save类。在深层嵌套流程方法中,您将看到dotPeek反映的代码:

if (this.NeedsHtmlTagEncode(field1))
  field1.Value = WebUtil.SafeEncode(field1.Value);

出于未知原因,NeedsHTMLAgencode为DisplayName返回true。您可以通过将保存处理器替换为继承旧处理器并重写受保护的虚拟bool NeedsHtmlTagEncodeSaveArgs.SaveField字段方法并让其返回false来解决此问题。然后,您只需使用xpath/sitecore/processors/saveUI/processor[@type='sitecore.Pipelines.Save.Save,sitecore.Kernel']将现有处理器与您自己的处理器进行修补。

更新,因为我们刚刚在一个项目中遇到此问题:

除了mikaelnet所写的错误(该错误会影响您在“内容编辑器外观”部分中更改“显示名称”字段然后保存该项目)之外,还有第二个错误会影响您在此处使用的“显示名称”功能区菜单按钮

根据我的发现,问题出现在/sitecore/shell/Applications/Dialogs/Prompt/Prompt.js文件中,它是在9.0和9.3之间引入的

这是9.0版本:

功能正常\u单击EVT{ evt&&Event.stopevt; ​ var maxlength=dialogArguments.maxlength!=null?parseIntdialogArguments.maxlength,10:0; ​ 如果dialogArguments.validation!=null{ var re=new RegExpdialogArguments.validation; } ​ var结果=$Value.Value; ... 9.3版本增加了一个sanitizeHtml调用:

功能正常\u单击EVT{ evt&&Event.stopevt; ​ var maxlength=dialogArguments.maxlength!=null?parseIntdialogArguments.maxlength,10:0; ​ 如果dialogArguments.validation!=null{ var re=new RegExpdialogArguments.validation; } ​ var result=sanitizeHtml$Value.Value; ...
我相信这两个问题都是在提到的bug中报告的,我们已经看到了sanitizeHtml方法的补丁版本,它修复了一些编码问题,但我不明白为什么它们会首先对结果进行编码,所以您看到的根本问题仍然存在。

我们刚刚在一个项目中遇到了这个问题,因此更新了:

除了mikaelnet所写的错误(该错误会影响您在“内容编辑器外观”部分中更改“显示名称”字段然后保存该项目)之外,还有第二个错误会影响您在此处使用的“显示名称”功能区菜单按钮

根据我的发现,问题出现在/sitecore/shell/Applications/Dialogs/Prompt/Prompt.js文件中,它是在9.0和9.3之间引入的

这是9.0版本:

功能正常\u单击EVT{ evt&&Event.stopevt; ​ var maxlength=dialogArguments.maxlength!=null?parseIntdialogArguments.maxlength,10:0; ​ 如果dialogArguments.validation!=null{ var re=new RegExpdialogArguments.validation; } ​ var结果=$Value.Value; ... 9.3版本增加了一个sanitizeHtml调用:

功能正常\u单击EVT{ evt&&Event.stopevt; ​ var maxlength=dialogArguments.maxlength!=null?parseIntdialogArguments.maxlength,10:0; ​ 如果dialogArguments.validation!=null{ var re=new RegExpdialogArguments.validation; } ​ var result=sanitizeHtml$Value.Value; ... 我相信这两个问题都是在提到的bug中报告的,我们已经看到了sanitizeHtml方法的补丁版本,它修复了一些编码问题,但是我不明白为什么它们会首先对结果进行编码,所以您看到的潜在问题仍然存在