如何以编程方式访问模板?

时间:2009-07-21 06:50:45

标签: sharepoint

我使用以下代码获取所需的SPtemplate:
SPListTemplate template = RootWeb.ListTemplates["TaskTemplate"];

但是这句话会引发以下错误:
Value does not fall within the expected range.

如何访问名为TaskTemplate的模板?

2 个答案:

答案 0 :(得分:3)

通过查看模板的名称,我会说这是您的自定义模板。要访问自定义模板,您需要使用以下代码。

//This gives you only the built-in template or templates deployed using Features
foreach (SPListTemplate item in oWeb.ListTemplates)
{
    Console.WriteLine(item.Name);
}

//This gives you the custom template created by you
foreach (SPListTemplate item in oSite.GetCustomListTemplates(oWeb))
{
    Console.WriteLine(item.Name);                        
}
//So for your requirement you need to use
oSite.GetCustomListTemplates(oWeb)["TaskTemplate"];

答案 1 :(得分:0)

听起来您尝试使用的列表模板不存在。有几点需要注意:

  1. 您是否在根网站(即RootWeb)中创建了列表?如果您要在子站点中创建列表,则应从您创建列表的同一站点获取SPListTemplate

  2. 如果您确定要在从中检索列表模板的同一站点中创建列表,请检查包含您正在使用的列表定义的所有功能是否已激活。激活该功能后,列表定义(即SPListTemplate)将添加到当前站点的可用列表模板中。

  3. 我猜“ TaskTemplate ”是指内置的SharePoint任务列表定义 - 如果是自定义定义,请忽略它。否则,您应该使用的正确名称是“任务”。