在 Sitecore 中,当非管理员用户选择项目的锁定和编辑选项时,我们正在创建一个新版本并将其工作流状态更改为以前版本的状态。这是使用项目锁定事件完成的。此外,当用户在新版本中单击保存按钮时,如果它处于某个工作流状态(状态 X),它应该转移到另一个状态(状态 Y)。我们使用 OnItemSaving 事件完成了这项工作。但是这种方法存在一个问题,在使用以下代码更改新版本的工作流状态时,在项目锁定事件处理程序中
using (new Sitecore.SecurityModel.SecurityDisabler())
{
latestVersion.Editing.BeginEdit();
latestVersion.Fields["__workflow state"].Value = previousVersion.Fields["__workflow state"].Value;
latestVersion.Editing.EndEdit();
}
由于 EndEdit() 函数,它会立即触发项目保存事件。因此,如果项目更改为状态 X,它会立即更改为状态 Y,这是我们不希望发生的事情。
我们需要做的是从一般的项目保存中清楚地识别用户单击保存按钮。这是可能的事情吗?