如何使用 C# 将项目添加到 TreelistEx?

How do I add an item to a TreelistEx using C#?

我似乎找不到关于此的任何文档。我有一个项目,它有一个 TreelistEx 字段:

我想以编程方式向该字段添加一个新项目,最好使用 glass mapper,但如果需要,vanilla sitecore 也可以。

有人可以帮我吗?我该怎么做?

请原谅我没有提供详细信息,我在这里找不到任何东西可以为我指明正确的方向。

似乎 sitecore 将这些字段存储为管道分隔列表。因此,您可以将值编辑为字符串(这非常 stringly typed)。因此可以将值作为字符串进行操作(天哪,这太糟糕了)。因此,要将 ID 为 {652FD742-AAE3-468D-81BE-7EF18E06B796} 的项目添加到 treelistEx 中,您可以:

Item item;
item.Editing.BeginEdit();
item.Fields["fieldname"].Value += "|{652FD742-AAE3-468D-81BE-7EF18E06B796}";
item.Editing.EndEdit();

将字符串拆分为数组,操作并将其转回字符串非常简单。

TBH 这段代码很糟糕。我想(知道 sitecore 我没有屏住呼吸)有更好的方法来实现这个...

TreeList 和 TreeListEx 的工作方式与多列表相同。

using (new Sitecore.SecurityModel.SecurityDisabler())
{

    Item newItem = Sitecore.Context.Item;

    newItem.Editing.BeginEdit();

    MultilistField mlf = newItem.Fields["FieldName"];

    // adding an item
    mlf.Add(ItemToAdd.ID.ToString());

    // removing an item
    mlf.Remove(ItemToRemove.ID.ToString());

    newItem.Editing.EndEdit();
}