前段时间做一个WSS的网站,客户希望在主页面可以动态创建/删除一个子网站.也就是说,要用代码去创建/删除一个子网站,样式如下:
通过在Google和SDK找了一些资料.感觉不是很难,下面和大家分享一下过程:
1.需要创建一个网站模板(为了让所有子网站风格统一)
- 首先创建一个子网站,选择Team site类型作为模板.
- 更改子网站的样式,根据你的需求
- 把这个子网站另存为模板.
2. 用代码创建网站:
Code
mySite = new SPSite(SPContext.Current.Site.ID);
//Get Custom Template
mySite.AllowUnsafeUpdates = true;
SPWebTemplateCollection CustomTemplates = mySite.GetCustomWebTemplates(uint.Parse(mySite.RootWeb.Locale.LCID.ToString()));
SPWebTemplate baseTemplate = null;
if (CustomTemplates.Count > 0 && CustomTemplate != string.Empty)
{
baseTemplate = CustomTemplates[CustomTemplate];
}
else
{
LErrMessage.Text = "Please configuration user-defined template";
return;
}
//SPWeb rootWeb = site.RootWeb;
if (strProjectUrl != string.Empty && baseTemplate != null)
{
//create a new Project
NewWeb = mySite.AllWebs.Add(mySite.RootWeb.ServerRelativeUrl.ToString() + "/" + strProjectUrl, txtProjectBox.Text, "", uint.Parse(mySite.RootWeb.Locale.LCID.ToString()), baseTemplate, false, false);
NewWeb.Navigation.UseShared = true;
NewWeb.Update();
mySite.AllowUnsafeUpdates = false;
}
3.为了识别创建的子网站,可以在左边导航(QuickLaunch)里面添加一个New Heading(English版本这样叫,中文sharepoint我不知道叫什么).然后在web part里面获取它下面的links所对应的子网站.可以通过代码去删除子网站:
Code
SPSecurity.RunWithElevatedPrivileges(delegate()
{
ListItem sItem = drpProjects.SelectedItem;
MySite = new SPSite(SPContext.Current.Site.ID);
MySite.AllowUnsafeUpdates = true;
MySite.RootWeb.AllowUnsafeUpdates = true;
//delete Project
string strUrl = sItem.Value.ToLower().Replace("/default.aspx", "");
delWeb = MySite.OpenWeb(strUrl);
delWeb.AllowUnsafeUpdates = true;
delWeb.Delete(); // delete Project site
delWeb.AllowUnsafeUpdates = false;
MySite.RootWeb.AllowUnsafeUpdates = false;
MySite.AllowUnsafeUpdates = false;
});
通过上面三个步骤,我们就可以很容易用代码创建/删除网站.