Sharepoint 2013 事件接收器 ItemUpdating - 检测附件
Sharepoint 2013 Event Receiver ItemUpdating - detect Attachments
我一直在寻找一种方法来检测使用 C# 开发的 SharePoint 2013 中的同步事件接收器对项目附件的更改。
ItemAdding 事件不相关,因为如果在创建项目的同时上传附件不是问题,但是,事件 ItemUpdating 更相关。事实上,如果仅在同步事件期间添加或删除一个(或多个)附件,我希望能够更新另一个字段。异步事件不是一个选项。
我尝试了 here 提供的解决方案,但没有成功:
- 添加附件后,Request.Files.Count 大于或等于 1
- 删除附件后,如果项目上仍存在其他附件,则它等于 1
- 不做任何更改时,如果项目上存在其他附件,它仍然等于 1。
你知道我该怎么做吗?
提前谢谢你,
凯文
编辑 4 月 19 日:
经过进一步调查,我发现Request.File中总是发送一个空文件,所以我现在知道Request.File.Count的原因了 总是至少等于 1。
通过添加一小段代码,我可以检测到正在添加一个或多个有效文件:
int attachCount = 0;
HttpFileCollection fileCollection = curContext.Request.Files;
for (int j = 0; j < fileCollection.Count; j++)
{
HttpPostedFile file = fileCollection[j];
if (file.ContentLength > 0)
{
attachCount++;
}
}
剩下的就是如何在 ItemUpdating 事件中检测到附件已被删除,有什么想法吗?
提前致谢
经过多方查找,我使用ItemUpdated事件解决了专用字段中附件删除数量的问题。一切都按预期工作。唯一的缺点是用户可能需要等待几秒钟才能看到附件删除的影响。
我一直在寻找一种方法来检测使用 C# 开发的 SharePoint 2013 中的同步事件接收器对项目附件的更改。
ItemAdding 事件不相关,因为如果在创建项目的同时上传附件不是问题,但是,事件 ItemUpdating 更相关。事实上,如果仅在同步事件期间添加或删除一个(或多个)附件,我希望能够更新另一个字段。异步事件不是一个选项。
我尝试了 here 提供的解决方案,但没有成功:
- 添加附件后,Request.Files.Count 大于或等于 1
- 删除附件后,如果项目上仍存在其他附件,则它等于 1
- 不做任何更改时,如果项目上存在其他附件,它仍然等于 1。
你知道我该怎么做吗?
提前谢谢你,
凯文
编辑 4 月 19 日: 经过进一步调查,我发现Request.File中总是发送一个空文件,所以我现在知道Request.File.Count的原因了 总是至少等于 1。
通过添加一小段代码,我可以检测到正在添加一个或多个有效文件:
int attachCount = 0;
HttpFileCollection fileCollection = curContext.Request.Files;
for (int j = 0; j < fileCollection.Count; j++)
{
HttpPostedFile file = fileCollection[j];
if (file.ContentLength > 0)
{
attachCount++;
}
}
剩下的就是如何在 ItemUpdating 事件中检测到附件已被删除,有什么想法吗?
提前致谢
经过多方查找,我使用ItemUpdated事件解决了专用字段中附件删除数量的问题。一切都按预期工作。唯一的缺点是用户可能需要等待几秒钟才能看到附件删除的影响。