Sitecore以编程方式更新NameValueList

时间:2016-08-16 20:31:49

标签: model-view-controller sitecore

是否有更新NameValueList字段?

我想找到一个键并以编程方式更新其值。 这是我尝试过的,但不起作用。

enter image description here

Sitecore.Data.Fields.NameValueListField data = Model.Rendering.Item.Fields["Name Value List"];
System.Collections.Specialized.NameValueCollection nameValueCollection = data.NameValues;

using (new Sitecore.SecurityModel.SecurityDisabler())
{
    Model.Rendering.Item.Editing.BeginEdit();
    nameValueCollection.Set("123456", "New Value");
    Model.Rendering.Item.Editing.EndEdit();
}

任何帮助请...

1 个答案:

答案 0 :(得分:0)

查看dotPeek中的NameValueListFieldNameValues属性不会传递对基础数据的引用,而是传递包含已解析值的对象。如果您对NameValueCollection进行了更改,则需要将其设置回字段。所以像这样:

Sitecore.Data.Fields.NameValueListField data = Model.Rendering.Item.Fields["Name Value List"];
System.Collections.Specialized.NameValueCollection nameValueCollection = data.NameValues;

using (new Sitecore.SecurityModel.SecurityDisabler())
{
    Model.Rendering.Item.Editing.BeginEdit();
    nameValueCollection.Set("123456", "New Value");
    data.NameValues = nameValueCollection;
    Model.Rendering.Item.Editing.EndEdit();
}

不相关:您似乎正在编辑Sitecore MVC渲染中的值。请记住以下几点:

  • 默认情况下,这将是Web数据库,并且值将在发布
  • 时被覆盖
  • 写入Sitecore数据库的速度非常慢,在面向公众的网页中通常是一个坏主意,可能会受到少量流量负载