📜  在sitecore c#中通过代码更新字段时不想更新修订版(1)

📅  最后修改于: 2023-12-03 15:23:27.612000             🧑  作者: Mango

在 Sitecore C# 中通过代码更新字段时不想更新修订版

在 Sitecore C# 开发中,我们可能需要通过代码来更新某个数据项的字段。但是如果我们直接通过代码更新了该字段,修订版也会被更新。这对于一些场景是不可接受的,比如需要保留历史版本的内容。本文将介绍如何在 Sitecore C# 中通过代码更新字段时不想更新修订版。

需要注意的问题

在进行字段更新时,我们需要注意以下两点:

  1. 如果我们直接通过代码更新了该字段,修订版也会被更新。
  2. 如果我们通过复制当前版本,再进行更新,虽然修订版不会被更新,但是会产生新的版本。

因此,我们需要找到一种方式,在不更新修订版的情况下,直接更新字段。

解决方案

在 Sitecore 中,数据项的字段信息存储在 Field 对象中。我们可以在更新字段之前,通过获取该字段的历史版本记录,找到最新的版本,并更新该版本的字段信息。这样,我们就可以在不更新修订版的情况下,直接更新该字段。

以下是实现上述功能的 C# 代码片段:

// 获取数据项
Item item = Sitecore.Context.Item;

// 获取字段
Field field = item.Fields["FieldName"];

// 获取最新的版本
Version version = item.Versions.GetLatestVersion();

// 获取该版本的字段信息
Field fieldVersion = version.Fields["FieldName"];

// 更新字段信息
using (new EditContext(version))
{
    fieldVersion.Value = "New Field Value";
}

// 保存版本
version.Save();

在上述代码中,我们通过 item.Versions.GetLatestVersion() 方法获取了最新的版本,并通过 version.Fields["FieldName"] 方法获取了该版本中特定字段的信息。我们通过 using (new EditContext(version)) 创建编辑上下文,将 fieldVersion.Value 属性赋值为新的字段值,然后通过 version.Save() 方法保存该版本的信息。

通过以上方式,我们就可以在 Sitecore C# 中通过代码更新字段时不想更新修订版了。