Sitecore 该字段包含一个不在选择列表中的值

Sitecore The field contains a value that is not in the selection list

我在 sitecore 中有一个项目“newsItem”,其字段为“Recipient” 这是带有 NameTypeSource 的项目模板的屏幕截图。

我想从后面的代码中为项目分配一个 Id

newsItem["Recipient"] = GetRecipientFromRadioButton();

private string GetRecipientFromRadioButton()
{
    //Get the item 
    Item enumerationNewsRecipientsItemId = Sitecore.Context.Database.GetItem("/sitecore/content/Site Config/Enumerations/News Recipients");

    foreach (Item item in enumerationNewsRecipientsItemId.Children)
    {
        if //Some Condition
            return item.ID.ToString();
    }

    return string.Empty;
}

现在,对于此项目,我在内容编辑器中看到以下内容“该字段包含一个不在选择列表中的值。”。尽管该 ID 是 /sitecore/content/Site Config/Enumerations/News Recipients

下项目的 ID 之一

Droplist 仅存储项目的名称。这就是为什么当您尝试将其设置为 ID 时,它说该值不存在于选择列表中。

您应该使用 Droplink 类型。

我复制了的部分答案所以问题:

The Droplist is similar to the Droplink field type in that they are both dropdowns. The Droplist will only store the name of the item (so it will not have a link to that item), while the Droplink stores the ID of the item. That means if you rename an option, or move it elsewhere in your Content Tree, the Droplist will not update (resulting in possible broken links), the Droplink will update.

在此处查看更详细的解释 Sitecore: Droplist vs. Droplink