2016-08-16 128 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