代码之家  ›  专栏  ›  技术社区  ›  Steve Ruiz

在SPWeb上捕获标题更改事件

  •  2
  • Steve Ruiz  · 技术社区  · 17 年前

    我正在使用SPWebEventReceiver侦听特定的SPWeb,它是 成功地 开火 韦伯 事件。当网络被移动时,我会用新的位置/标题更新一个列表。

    我想做的是当网络 更名 . 我是否通过附加项侦听器并等待项更新事件来完成此操作?如果是这样的话,我会欣赏一小段代码的!谢谢!

    4 回复  |  直到 17 年前
        1
  •  2
  •   Steve Ruiz    17 年前

    看起来这是SharePoint OM的一个错误。 The event receiver is clearly supposed to fire when the name of a web is changed, but it does not. 它只在网站的URL更改时激发。

        2
  •  0
  •   George Durzi    17 年前

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

    • 坐在地上的
    • 选址问题
    • 删除网页
    • 楔形删除
    • 韦伯
    • 网络移动

    itemAdded是在spiemEventReceiver中定义的,它适用于splistem对象。

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

    当对属性包调用.update()时(例如,当标题更新时),它看起来不像可以进入任何事件。

        3
  •  0
  •   Hans    17 年前
    1. 我想说,重命名Web名称应该触发Webmoved。
    2. 网站标题重命名不触发任何操作。

    问题:您希望进行哪些更改?因为任何元数据(例如)都可以存储在内部的列表中,它支持许多事件。

        4
  •  0
  •   willman    11 年前

    我不认为这是一个bug,我认为这只是对文档的误解。如您所述,文档指示Webmoving和Webmoved事件是由正在修改或重命名的网站URL触发的:

    从 MSDN Doc :“在重命名现有网站或将其移动到其他父对象之前发生的事件之前同步。”

    但是,在用户界面中更改的不是站点的“名称”,而是站点的标题。spweb对象确实有一个“name”属性,可以通过对象模型访问该属性,并且更新该name属性并调用spweb.update()实际上会触发webmoved事件。问题是,此属性不会通过网站的基于Web的设置页公开,只公开“标题”字段,并且此字段更改不会触发事件。虽然这看起来有点违反直觉,甚至有点误导性,但是如果您从字面上阅读文档,它的行为就和文档中的行为完全一样。