Sitecore中的Droplink和Droplist在自定义项目生成器工具之间有什么区别?

Yog*_*rma 3 sitecore

我知道这两个字段在Sitecore中只包含单个项目,但Droplinks存储项目的ID,Droplists存储项目的显示名称.

在编码部分,当我们通过自定义项生成器类获取Droplist的值时,它会给出ListItems.但正如我上面提到的,Droplists也包含单个项目.那么有什么区别,为什么自定义项生成器类会在Droplists的情况下提供列表项?这是自定义项目生成器中的错误吗?

这两个领域的核心差异是什么?

Mat*_*ser 7

您对Sitecore如何存储这两种不同字段类型的值的理解是正确的.我不知道您正在使用的代码或模块的详细信息,但这里有一些示例代码片段,解释了如何完成此操作.

Droplist

在字段中存储所选项的名称.请注意,Sitecore内容编辑器中的下拉列表将显示项目的显示名称,但仍在内部使用项目名称.如果要检索所选项目,可以按如下方式执行:

Item sourceItem = //code here to get the item selected as the *source* of the template field
Item item = Sitecore.Context.Item;
string selectedName = item["YourDroplistFieldName"];
Item selectedItem = sourceItem.Children[selectedName];
Run Code Online (Sandbox Code Playgroud)

Droplink

存储字段中所选项的ID.要检索此项目,请使用以下内容:

Item item = Sitecore.Context.Item;
LinkField field = item.Fields["YourDroplinkField"];
Item selectedItem = field.TargetItem;
Run Code Online (Sandbox Code Playgroud)

注意,要查看Sitecore如何在内部存储字段,您可以选择"查看"工具栏并选中"原始值"复选框(在内容编辑器中).

一般来说,我几乎总是使用droplink场在droplist,除非你只需要使用所选项目的名称.