如果以编程方式与 sitecore 中的先前版本没有变化,如何删除新创建的项目版本

How to remove newly created item version if there is no change with previous version in sitecore programmatically

我正在创建锁定和编辑按钮上的项目版本。如果作者在签入版本时未更改该版本的任何值,我想删除该版本。我想比较版本并删除新创建的版本,如果在检查项目版本时没有变化。

注意:不需要工作流程

  1. 在内容编辑器中打开项目
  2. 单击“版本”选项卡
  3. 点击版本块上的比较按钮 结果,您将看到能够比较 2 个版本的对话框。如果您没有检测到任何更改,则可以删除新创建的版本。 P.S。截图来自7.2版本,但8+版本比较版本的方式几乎相同。

在 ItemSaving 事件中,您可以获得项目的更改列表。 下面是一些示例代码来了解这个想法:

protected void OnItemSaving(object sender, EventArgs args)
    {
        var newItem = Event.ExtractParameter(args, 0) as Item;
        Item originalItem = newItem.Database.GetItem(newItem.ID, newItem.Language, newItem.Version);
    var differences = FindDifferences(newItem, originalItem);    
} 

private List<string> FindDifferences(Item newItem, Item originalItem)
    {
        newItem.Fields.ReadAll();
        IEnumerable<string> fieldNames = newItem.Fields.Select(f => f.Name);
        return fieldNames
          .Where(fieldName => newItem[fieldName] != originalItem[fieldName])
          .ToList();
    }