2016-08-16 105 views
0

是否有更新NameValueList字段?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(); 
} 

任何帮助,请...

回答

0

在dotPeek的NameValueListField来看,该NameValues属性不引用传递到基础数据,而是包含解析值的对象。如果您对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渲染中的值。请记住几件事情:

  • 默认情况下,这将是网络数据库,和值将被覆盖发布
  • 写入到数据库Sitecore的非常缓慢,在公营通常是一个坏主意面临的网页,可能会在甚至很小的流量负载下
+0

哦,我再次检查,它的工作。提出的代码是防止复杂性的示例代码。我不明确在生产中添加此代码。 – Jay

相关问题