Обновление свойств SPFile с помощью SPFile.Update()

Я пытаюсь обновить SPFile свойства.

Вот мой код:

            using (SPSite oSite = new SPSite(sFileURL))
            {
                using (SPWeb oWeb = oSite.OpenWeb())
                {
                    oWeb.AllowUnsafeUpdates = true;
                    oFile = oWeb.GetFile(sFileURL); 
                    foreach (XmlNode xNode in oXmlDoc.FirstChild.ChildNodes)
                    {
                        oFile.Item.Properties[xNode.Name] = xNode.InnerText;
                        string itemmm =oFile.Item.Properties[xNode.Name].ToString();

                    }
                    oFile.Update();
                    oWeb.AllowUnsafeUpdates = false;
                }
            }

Проблема в том, что при проверке свойств файла в SharePoint я не вижу внесенных изменений. Я пытался добавить AllowUnsafeUpdates = true но это не решило проблему.

Что еще я могу сделать?

2 ответа

Решение

На самом деле, вы не модифицируете SPFile экземпляр, но связанный SPItem, Отсюда зовет SPFile.Update() ничего не делает. Лучше работать с SPItem экземпляр напрямую:

SPItem item = oFile.Item;
item.Properties[xNode.Name] = xNode.InnerText;
item.Update();

Также, AllowUnsafeUpdates собственность не имеет отношения к вашей ситуации. Не изменяйте это.

В вашем коде отсутствуют все проверки, которые необходимо выполнить до фактического обновления.

 using (SPSite oSite = new SPSite(sFileURL))
      {
       using (SPWeb oWeb = oSite.OpenWeb())
            {
             oWeb.AllowUnsafeUpdates = true;
             SPFile oFile = oWeb.GetFile(sFileURL); 
             if (oFile == null)
             {
             return false;
             }
             SPListItem item = oFile.GetListItem();           

             if (item.File.Level == SPFileLevel.Checkout)
             {
                 item.File.UndoCheckOut();
             }
             if (item.File.Level != SPFileLevel.Checkout)
             {
             item.File.CheckOut();
             }

             item["Your Column name"] = "Value";

             item.SystemUpdate(false);
             item.File.CheckIn("SystemCheckedin");
             item.File.Publish("SystemPublished");    
             oWeb.AllowUnsafeUpdates = false;
       }
   }
Другие вопросы по тегам