SetProperty不会更新网站

时间:2015-07-27 14:31:21

标签: c# sharepoint

在SharePoint 2010网站上,我有一个ItemAdded事件接收器,它检测添加到Pages库的页面,用文件中的信息填充它,并从该信息设置一些自定义列,以便可以根据他们的搜索页面内容。设置列的函数部分与此类似:

page.SetProperty("Column1", ExistsOrEmpty("Property1", dictionary));
page.SetProperty("Column2", ExistsOrEmpty("Property2", dictionary));
...
page.Update();

其中page的类型为SPFile,并且是已添加到库中的页面。 ExistsOrEmpty是我编写的一个函数,用于防止KeyNotFound异常:

private static string ExistsOrEmpty(string key, Dictionary<string, string> dict)
{
    try
    {
        return dict[key];
    }
    catch
    {
        return "";
    }
}

我的问题是,特别是一个列,描述,在网站上没有更新,即使其余的更新没有任何问题。以下是我逐行逐步调试此代码所采取的步骤:

  1. 我确保ExistsOrEmpty("Description", dict)返回正确的值。
  2. 我执行page.SetProperty("Description", ExistsOrEmpty("Description", dict))以及我想设置的所有其他属性。我更新的所有属性都是单行字符串。
  3. 我使用page.Update()更新页面。
  4. 我使用page.GetProperty检查网页的属性,以确认所有属性都已正确更新,这些属性已经更新。
  5. 我使用“查看属性”完成调试并检查SharePoint网站本身的页面属性。除了描述之外,我设置的所有属性都已更新。
  6. 我无法想象为什么当其他专栏没有出现问题时,这一列不会更新。我错过了什么吗?

    编辑: 我已经做了一些调整以尝试解决这个问题,并且它已经开始发生在其他多个列中。我注意到,对于其他列,错误发生在列名称曾经有空格并且我将其删除。我已确保更新我的代码以考虑这些更改,我的调试器仍然显示列已更新,但UI不反映这些更改。使用内部名称而不是显示名称修复此问题,但不是我对描述的主要问题。

1 个答案:

答案 0 :(得分:1)

请你试试。

您的SPFile对象上应该有一个SPListItem对象。

它将类似于page.item["Description"] = "desc"

然后调用更新。

干杯 Truez