2

我正在使用在WebMoved 事件上成功 触发的SPWebEventReceiver 监听特定的 SPWeb。当网络移动时,我用新的位置/标题更新列表。

我希望能够做的是监听 Web 何时重命名。我是否通过附加项目侦听器并等待 ItemUpdated 事件来做到这一点?如果是这样,我将不胜感激一小段代码!谢谢!

4

4 回答 4

2

看起来这是 SharePoint OM 的一个错误。事件接收器显然应该在网络名称更改时触发,但事实并非如此。它仅在 Web 的 URL 更改时触发。

于 2009-04-13T14:31:54.910 回答
0

史蒂夫,据我所知,SPWebEventReceiver 仅在 SPWeb 上公开以下事件(http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spwebeventreceiver_members.aspx

  • 网站已删除
  • 网站删除
  • 网页已删除
  • 星期三删除
  • 网络移动
  • 网络移动

ItemAdded 在适用于 SPListItem 对象的 SPItemEventReceiver 中定义。

SPWeb 的 Title 属性存储在属性包 ( http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.properties.aspx ) 中。

当在属性包上调用 .Update() 时,例如在更新 Title 时,您似乎无法访问任何事件。

于 2009-04-12T20:11:29.220 回答
0
  1. 我会说重命名 Web 名称应该触发 WebMoved。
  2. 站点标题重命名不会触发任何操作。

问题:您希望利用哪些变化?因为例如任何元数据都可以存储在里面的列表中,这支持很多事件。

于 2009-04-15T20:47:24.710 回答
0

我不相信这是一个错误,我相信这只是对文档的误解。正如您所说,文档表明 WebMoving 和 WebMoved 事件是由修改或重命名站点的 url 触发的:

来自MSDN Doc:“在现有网站被重命名或移动到不同的父对象之前发生的同步之前事件。”

然而,在 UI 中改变的不是站点的“名称”,而是站点的标题。SPWeb 对象确实具有可通过对象模型访问的“名称”属性,更新该名称属性并调用 SPWeb.Update() 实际上会触发 WebMoved 事件。麻烦的是,这个属性没有通过网站的基于Web的设置页面暴露出来,只有“标题”字段被暴露出来,而且这个字段变化不会触发事件。虽然这似乎有点违反直觉,甚至具有误导性,但如果您从字面上阅读文档,它的行为与文档中的完全一样。

于 2014-10-30T20:28:28.660 回答