SetProperty不会更新站点上的所有文件属性

本文关键字:文件属性 站点 更新 SetProperty | 更新日期: 2023-09-27 18:04:49

在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网站本身使用视图属性。我设置的所有属性除了Description已经更新。

我无法想象为什么这一列不能更新,而其他的都更新得很好。我错过什么了吗?

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

SetProperty不会更新站点上的所有文件属性

你能试试这个吗?

你的SPFile对象应该有一个SPListItem对象。

比如page.item["Description"] = "desc"

然后调用更新。

干杯Truez