Sharepoint 2010 以编程方式获取自定义模板sharepoint 2010

Sharepoint 2010 以编程方式获取自定义模板sharepoint 2010,sharepoint-2010,Sharepoint 2010,要获取标准模板,我需要: private void getTemplates() { string server = serverURL(); using (SPSite siteCollection = new SPSite(server)) { SPWebTemplateCollection Templates = siteCollection.GetWebTemplates(1033); foreach (SPWebTemplate

要获取标准模板,我需要:

private void getTemplates()
{
    string server = serverURL();
    using (SPSite siteCollection = new SPSite(server))
    {
        SPWebTemplateCollection Templates = siteCollection.GetWebTemplates(1033);
        foreach (SPWebTemplate template in Templates)
        {
                ddlSiteTemplate.Items.Add(new ListItem(template.Title, template.Name));
        }
    }
}
我想我可以做到:

private void getTemplates()
{
    string server = serverURL();
    using (SPSite siteCollection = new SPSite(server))
    {
        SPWebTemplateCollection Templates = siteCollection.GetCustomWebTemplates(1033);
        foreach (SPCustomWebTemplate template in Templates)
        {
                ddlSiteTemplate.Items.Add(new ListItem(template.Title, template.Name));
        }
    }
}
要获取自定义模板,但下拉列表为空,我在这里做错了什么

提前谢谢

编辑:模板在解决方案库中被激活。

我得到了它

private void getTemplates()
{
    string server = serverURL();
    using (SPSite siteCollection = new SPSite(server))
    {
        SPWebTemplateCollection Templates = siteCollection.GetAvailableWebTemplates(1033);
        foreach (SPCustomWebTemplate template in Templates)
        {
//this gives me all templates, both standard and custom so I filter by name
if(template.name.ToUpper().StartsWith("CUSTOM"))
{
                ddlSiteTemplate.Items.Add(new ListItem(template.Title, template.Name));
}
        }
    }
}

SPSite不包含GetAvailableWebTemplates方法。对于那些想使用代码的人,请使用下面的代码。因此,我添加了这行代码:

 using(SPWeb web = siteCollection.OpenWeb())
    {
                SPWebTemplateCollection Templates = web.GetAvailableWebTemplates(1033);

完整代码:

 private void getTemplates()
    {
        string server = serverURL();
        using (SPSite siteCollection = new SPSite(server))
        {
using(SPWeb web = siteCollection.OpenWeb())
{
            SPWebTemplateCollection Templates = web.GetAvailableWebTemplates(1033);
            foreach (SPCustomWebTemplate template in Templates)
            {
    //this gives me all templates, both standard and custom so I filter by name
    if(template.name.ToUpper().StartsWith("CUSTOM"))
    {
                    ddlSiteTemplate.Items.Add(new ListItem(template.Title, template.Name));
    }
}
            }
        }
    }