我有一个父网站,我想在其下使用visual studio 2010动态创建子网站。
我想创建的子网站有一个共同的stuructre(在列表和自定义的temrs中)。
所以我在sharepoint 2010中保存了模板,它变成了wsp并进入了图库。
现在我如何使用这个模板说mytemplate.wsp,在visual studio中创建网站。
我试过这个
使用(SPSite网站=新SPSite(“http://infml01132:5566/sites/VRND”))
{
using (SPWeb web = site.OpenWeb())
{
SPWebTemplateCollection myTemplates = site.GetCustomWebTemplates(Convert .ToUInt32(web.Locale.LCID));
//SPWebTemplateCollection temlates1 = site.GetCustomWebTemplates(1033);
//SPWebTemplateCollection temlates = site.GetWebTemplates(1033);
//SPCustomWebTemplate
SPWebTemplate subsitetemplate = myTemplates["vrndtmpl" ];
web.Webs.Add("subsite1" , "rnd subsite1" , "subsite description changed" , Convert .ToUInt16(1033), subsitetemplate, false , false );
}
}
但是我没有在mytemplates集合中获取我的模板。
由于
答案 0 :(得分:1)
我们使用此代码按名称检索网站模板:
private SPWebTemplate GetSiteTemplate(SPSite site, string templateName, int lcid)
{
foreach (SPWebTemplate webTemplate in site.GetWebTemplates(lcid))
{
if (webTemplate.Name.ToLower().Contains(templateName.ToLower()))
{
return webTemplate;
}
}
return null;
}
100%有效。 所以,在你的情况下,你应该写:
using (SPSite site = new SPSite ("http://infml01132:5566/sites/VRND"))
{
using (SPWeb web = site.OpenWeb())
{
SPWebTemplate subsitetemplate = GetSiteTemplate(site, "vrndtmpl", 1033);
web.Webs.Add("subsite1" , "rnd subsite1" , "subsite description changed" , uint(1033), subsitetemplate, false , false);
}
}
另外,请确保您已将站点模板部署在SiteTemplates目录下,并将相应的webtemp.xml文件部署到< 14 hive> \ TEMPLATE \ 1033 \ XML 或通过它部署功能,如here所述。