使用我的自定义模板在父网站下创建新的网站sharepoint 2010以编程方式使用visual studio 2010

时间:2010-09-18 07:36:18

标签: visual-studio-2010 sharepoint-2010

我有一个父网站,我想在其下使用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集合中获取我的模板。

由于

1 个答案:

答案 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所述。