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” .如下图:
第二步,写你的自定义逻辑。(我的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,它可以满足你的需求。
努力不一定成功,但放弃一定失败!