如果sitecore中的先前版本没有更改,如何以编程方式删除新创建的项目版本
Posted
技术标签:
【中文标题】如果sitecore中的先前版本没有更改,如何以编程方式删除新创建的项目版本【英文标题】:How to remove newly created item version if there is no change with previous version in sitecore programmatically 【发布时间】:2017-10-31 14:23:10 【问题描述】:我正在创建锁定和编辑按钮上的项目版本。如果作者在签入版本时没有更改该版本的任何值,我想删除该版本。如果在签入项目版本时没有更改,我想比较版本并删除新创建的版本。
注意:不需要工作流
【问题讨论】:
【参考方案1】:在 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();
【讨论】:
【参考方案2】:-
在内容编辑器中打开项目
点击版本标签
单击版本块上的比较按钮
结果,您将看到能够比较 2 个版本的对话框。如果您没有检测到任何更改,则可以删除新创建的版本。
附:屏幕截图来自 7.2 版本,但 8+ 版本的版本比较方式几乎相同。
【讨论】:
感谢您的输入,但我的问题是我们如何以编程方式进行操作以上是关于如果sitecore中的先前版本没有更改,如何以编程方式删除新创建的项目版本的主要内容,如果未能解决你的问题,请参考以下文章
什么时候在Sitecore 7版本中明确使用SOLR而不是Lucene?