如何从用作预定义列表的 sitecore 下拉列表中获取字段值

How to obtain field values from a sitecore droplist used as a predefined list

在我的模板中,我有一个 Droplist 字段类型,它映射到一个 Sitecore 文件夹,其中包含 Droplist 的值,在本例中为 Colours。这是为了防止编辑者打错字或发明不在预定义列表中的颜色。

因此该颜色基于我称为 TAGS 的模板,该模板具有单个字段类型 'colour',在这里我使用该模板创建了一系列项目以创建样本列表的颜色。

当我访问主模板时,我会在该下拉列表中看到颜色值,因此它可以正常工作,因为我可以访问该字段值:

tileValues.Attributes["class"] += " tile-" + Item.Fields["Tile Colour"].Value.ToLower();

但是我意识到它没有使用模板的字段值,而是使用了我为项目命名的名称。所以它实现了我想要的结果只是一个快乐的错误。

但是我如何在结束代码中获取该项目的实际字段值。我有一些场景,其中会有多语言编辑器,所以我们可以将标签命名为 rouge、blanc 等,这是编辑器在 Droplist 中选择时会看到的,但我们需要字段的颜色值仍然是红色或白色等

我试过了:

Item.Fields["Tile Colour"].Item.Fields["Colour"].Value

但是尽管 API 提示暗示其有效,但还是失败了。

我希望这是有道理的,有人可以帮助我获取实际字段值而不是项目名称。

正如 Sitecore Climber 所写,不要使用 Droplist 字段类型 - 它仅存储项目名称,您无法在后面的代码中获取项目本身。

使用 Droplink 字段类型 - 它存储项目的 ID。

那么您可以获得物品:

Item colourItem = Sitecore.Context.Database.GetItem(Item["Tile Colour"]);
if (colourItem != null)
{
    string colour = colourItem["Colour"];
|