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

SetProperty doesn't update all file properties on site

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

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) returns 正确的值,确实如此。
  2. 我执行 page.SetProperty("Description", ExistsOrEmpty("Description", dict)),以及我希望设置的所有其他属性。我更新的所有属性都是单行字符串。
  3. 我使用 page.Update() 更新页面。
  4. 我使用 page.GetProperty 检查页面的属性,以确认所有属性都已正确更新,它们确实如此。
  5. 我完成调试并使用“查看属性”检查 SharePoint 网站本身的页面属性。我设置的所有属性 除了描述 已更新。

我无法想象为什么这一列不会更新,而其他列已经更新没有问题。我错过了什么吗?

编辑: 我已经做了一些调整来尝试解决这个问题,而且其他多个专栏也开始出现这种情况。我注意到,对于其他列,错误发生在列名曾经有 space 的地方,我将其删除。我已确保更新我的代码以说明这些更改,并且我的调试器仍显示正在更新的列,但 UI 不反映这些更改。 使用内部名称而不是显示名称解决了这个问题,但不是我在描述中遇到的主要问题。

你能试试这个吗

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

它会像 page.item["Description"] = "desc"

然后调用更新。

干杯 特鲁兹