页面库无法捕获到Added事件?
标题党一下。
问题发生在一个文档库(文档模板是“空白页”)中,写了一个Added的事件处理程序,把标题字段改成文件名(不带扩展名的),但是发现新建页面的时候(不是上载)没效果。难道没有捕获到Added事件?
经过单点调试,发现事件是捕获到了,因为里面抛出一个异常导致没有正常执行。
很奇怪的问题:在Added事件中,properties.ListItem居然是null!(ListItemID是0),一般而言只有在Adding的时候才是null(因为Adding时条目还没有真正被创建出来),不知道是不是SharePoint的bug,不知道是不是在某些hotfix更新过了(我对hotfix的跟踪不是很及时。。。),也不知道在其他文档模板的情况下有没有问题。
解决方法是这样的:
1: using(SPWeb web = properties.OpenWeb())
2: {
3: SPFile file = web.GetFile(properties.AfterUrl);
4: SPListItem item = file.Item;
5: // do something with the item
6: }
可以看到,AfterUrl是可以拿到这个新页面的地址的,而且可以正常拿到文件和条目,说明在Added的这个时候条目已经出现了,但是为什么直接用properties.ListItem拿不到呢?有时间的话可以去挖掘一下……