SharePoint 2010中的WebProvisioned Event Handler

在SharePoint 2010中,新增加了一些Event Handler事件,例如:针对Web级别的WebProvisioned(SPWebEventProperties)WebAdding(SPWebEventProperties),和针对列表级别的ListAdding(SPListEventProperties)ListDeleting(SPListEventProperties)等,更加详细的内容请参考:http://msdn.microsoft.com/en-us/library/ff407299.aspx

在本文中我将简单说一下WebProvisioned(SPWebEventProperties)这个事件。官方的描述是:After event that fires after a subsite is fully provisioned and the provisioning process has stopped, but does not fire when the root web site of a new site collection is created。我的理解:就是当站点(Web)创建完成之后,你可以自定义的事件,譬如说:修改站点的母版页,新建自定义列表等等。

第一步,项目中添加“Event Handler”,选中Web Events,然后选中想要捕获的事件,例如“a site was provisioned” .如下图:

image

第二步,写你的自定义逻辑。(我的demo是要修改站点的title):

   1:  /// <summary>
   2:      /// Web Events
   3:      /// </summary>
   4:      public class TestEventHandlerWebProvisioned : SPWebEventReceiver
   5:      {
   6:         /// <summary>
   7:         /// A site was provisioned.
   8:         /// </summary>
   9:         public override void WebProvisioned(SPWebEventProperties properties)
  10:         {
  11:             //base.WebProvisioned(properties);
  12:             SPWeb web = properties.Web;
  13:             web.Title = "test"+web.Title;
  14:             web.Update();
  15:         }

第三步,发布(感谢VS2010,让SharePoint的开发变得如此的简单)

结果:当你在当前站点新建一个网站的时候,网网站的标题前面会自定加上一个“test”。

疑问:

1. 当我在当前站点的子站点新建网站的时候,标题会变化吗?这个feature还会起作用吗?如果不起作用,难道我还要在每个站点上都激活这个feature?有没有其他的办法?

2. 我现在有一个新的需求,当用户新建“博客”或者“工作组”站点的时候,我要在站点里面新建一个列表;或者说当用户新建“我的站点”的时候,我想要在每个用户自己的站点上加上点东西,怎么办?

我在下一篇中会介绍一下Feature Stapling,它可以满足你的需求。

posted @ 2012-02-15 19:40  范文轩  阅读(721)  评论(0编辑  收藏  举报