Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sitecore 8,MVC,体验编辑器:如何在使用字段编辑器按钮后进行渲染刷新_Sitecore_Sitecore Mvc_Sitecore8 - Fatal编程技术网

Sitecore 8,MVC,体验编辑器:如何在使用字段编辑器按钮后进行渲染刷新

Sitecore 8,MVC,体验编辑器:如何在使用字段编辑器按钮后进行渲染刷新,sitecore,sitecore-mvc,sitecore8,Sitecore,Sitecore Mvc,Sitecore8,我们有一个呈现,在当前项目的树选择中列出所选项目。在我们的例子中,我们称之为“标签”(1) 我们在组件中添加了一个字段编辑器按钮,以允许编辑器更改所选项目。(2) (例如,如上所述) 当编辑器单击(2)编辑器窗口(3)时,它将在对话框中打开。编辑器可以使用TreeSelect选择不同的项目(在本例中称为标记) 当编辑器按下ok按钮(4)时,设置值 现在谈谈问题: 当编辑器按下“保存”按钮时,这些值实际上是在存储时设置的,但我们希望页面(1)上的列表在编辑器按下“确定”按钮(4)时立即反映设置的项

我们有一个呈现,在当前项目的树选择中列出所选项目。在我们的例子中,我们称之为“标签”(1)

我们在组件中添加了一个字段编辑器按钮,以允许编辑器更改所选项目。(2) (例如,如上所述)

当编辑器单击(2)编辑器窗口(3)时,它将在对话框中打开。编辑器可以使用TreeSelect选择不同的项目(在本例中称为标记)

当编辑器按下ok按钮(4)时,设置值

现在谈谈问题:

当编辑器按下“保存”按钮时,这些值实际上是在存储时设置的,但我们希望页面(1)上的列表在编辑器按下“确定”按钮(4)时立即反映设置的项目,即在必须实际保存整个项目之前

我们如何做到这一点

(我正在与Sitecore支持部门联系,但到目前为止我还没有得到任何答复…)

更新 在与支持人员进行了大量交谈之后,我们仍然没有找到有用的解决方案

我们尝试将其转换为显示链接的字段渲染器。 起作用的是:

  • 当您在弹出式字段编辑器中编辑字段时,该字段确实会得到更新。(但是……)
  • 第一次加载页面时,它看起来很好
  • 您可以使用编辑字段的命令创建一个WebEdit按钮,并将其作为自定义按钮添加到字段中(注册
    ,然后将单击按钮设置为
    WebEdit:fieldeditor(命令={3473DDA1-2983-493C-AF7A-054C75AA7AD3},字段=NameOfField
    ,其中guid指向itelf并在其上设置了“图标”)
不起作用的是:

  • 该字段由原始值更新,而不是我想要显示的内容。涉及服务器代码,但不涉及html代码的呈现
  • 当我想在字段编辑器中编辑值时,发送到字段编辑器的值不是原始值,而是页面上实际显示的值。(我想这可以通过某种方式解决)
支持问题变成了一个功能请求,让服务器参与呈现字段,而不仅仅是向更新字段的JavaScript发送一个新值。服务器进行第一次呈现,因此当它已经参与更新时,应该允许它在以下时间进行呈现

我们已经决定现在不在这上面花费更多的时间(我们还有其他事情要做。)并且有一个糟糕的编辑器体验,因为在编辑器实际保存项目之前,字段不会得到更新


我们仍然没有合适的解决方案来解决这个问题。如果您想继续研究它,并希望参考我的问题,它是439059。

这在这里可能没有用处。我在普通网站上做过,但在Sitecore中没有。但是,这里有一种可能性

在这种情况下,您将向子弹出窗口传递回调函数。此回调将导致调用方/父窗口重新读取/重新加载子窗口刚刚更新的信息

例如: 用户按(2)键打开编辑器窗口(3)(编辑器窗口打开,回调函数作为参数传递) 用户按下“确定”按钮(4),“确定”按钮事件处理程序更新更改,然后调用回调函数重新加载现在更新的信息,并关闭弹出窗口。 一旦弹出窗口关闭,父窗口现在显示弹出窗口/编辑器刚刚更新的信息


这需要一些客户端javascript(jquery)开发,但通常是可以做到的。

一般来说,Sitecore支持团队只会在您的记录没有100%完成时要求您填写其他信息。我在支持部门的经验是,他们(在信息完成时)将始终为您的问题提供合适的修复/解决方案。是的,@Younes,大多数时候sitecore支持都给出了很好的答案,但在这个问题上,有一些误解(包括我的误解和他们的错误)让我发脾气。-)所以我想我会给stackoverflow社区一个更好/更快地给出答案的机会。当我得到答案时,更多的人应该能够阅读它。