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 "";
}
}
我的问题是,有一个列,特别是描述,没有更新在网站上,即使其余的更新没有任何问题。下面是我在逐行调试这段代码时所采取的步骤:
- 我确保
ExistsOrEmpty("Description", dict)
返回正确的值,它确实如此。 - 我执行
page.SetProperty("Description", ExistsOrEmpty("Description", dict))
,以及我希望设置的所有其他属性。我更新的所有属性都是单行字符串。 - 我使用
page.Update()
更新页面。 - 我使用
page.GetProperty
检查页面的属性,以确认所有属性都已正确更新。 - 我完成调试和检查页面的属性在SharePoint网站本身使用视图属性。我设置的所有属性除了Description已经更新。
我无法想象为什么这一列不能更新,而其他的都更新得很好。我错过什么了吗?
EDIT:我已经做了一些调整来尝试修复这个问题,并且它也开始发生在其他多个列中。我注意到,对于其他列,错误发生在列名曾经有一个空格的地方,我删除了它。我已经确保更新我的代码以考虑这些更改,并且我的调试器仍然显示正在更新的列,但是UI没有反映这些更改。使用内部名称而不是显示名称修复了这个问题,但不是我在描述中遇到的主要问题。
你能试试这个吗?
你的SPFile对象应该有一个SPListItem对象。
比如page.item["Description"] = "desc"
然后调用更新。
干杯Truez