Sitecore -未检测到已修改的字段.如何强制显示保存提示符

Sitecore - Field not detected as modified. How to force the save prompt to show?

本文关键字:字段 何强制 显示 提示符 保存 修改 检测 Sitecore      更新时间:2023-09-26

我们正在使用Sitecore的Taxonomy模块:https://marketplace.sitecore.net/Modules/T/Taxonomy.aspx?sc_lang=en

该模块在90%的时间内正常工作。唯一的问题是,当您在分类法字段中从自动完成选项中选择一个值时,该字段似乎没有被标记为已更改。当编辑发布"你想要保存吗?"提示符时没有显示,并且发布的内容没有标记,这会造成偶尔的混淆。

如果我们使用对话框而不是从自动完成中选择,一切都很好。

我查看了标记、JavaScript和c#代码,但找不到解决方案。我甚至尝试设置Sitecore.Context.ClientPage。修改= true但似乎没有任何作用

如何强制显示保存提示符?

我有一个类似的问题,我正在使用js更新一个字段,体验编辑器没有检测到变化。

我通过使用js做以下事情得到了这个工作:-

  1. 有一个保存按钮状态对象保存在视图状态字段。你可以通过window.parent.document.getElementById("__SAVEBUTTONSTATE")抓取。然后我做了以下操作:-

    var saveButtonState = window.parent.document.getElementById("__SAVEBUTTONSTATE");
    saveButtonState.value = 1;
    saveButtonState.onchange();
    

这将使保存按钮启用

  • 在体验编辑器中,Sitecore将您的Sitecore项字段包装在一个span元素中,该元素包含一个唯一的id。(这些是你在体验编辑器中与之交互的字段)。然而,当你点击保存按钮时,Sitecore接收的不是这些值。Sitecore实际上将项目字段的值存储在隐藏的输入中,因此当您在后台与span元素交互时,这些隐藏的输入将被更新。因此,为了让Sitecore接收您的更改,您必须更新相应的隐藏输入。如果您在体验编辑器中打开Inspect元素并搜索"scFieldValues",您将看到这些隐藏的输入。我使用jquery更新了这个字段:-

    $('#scFieldValues').children('input').each(function () {
                        if (id.indexOf($(this).attr('id')) >= 0) {
                            $(this).val(value);
                        }
                    });
    
  • id对象是span元素的id。该id的内容用于隐藏输入的id。这就是我使用"id"的原因。IndexOf"查找正确的输入元素。因此,当我更新span元素的值时,我获取该值并更新相应的输入。

    希望能有所帮助