SharePoint自定义controltemplate未应用

时间:2009-08-24 08:51:27

标签: sharepoint sharepoint-2007 controltemplate

我在使用自定义控件模板时遇到问题。

我的目的是在NewForm.aspx上使用自定义控件模板作为列表。

  1. 我创建了一个CustomTemplate.ascx文件,并将其部署到12/Template/CONTROLTEMPLATES

    <SharePoint:RenderingTemplate ID="CustomListForm" runat="server" >...

  2. 我修改了列表的schema.xml文件以使用我的自定义模板:

    <Form Type="NewForm" Url="NewForm.aspx" WebPartZoneID="Main" Template="CustomListForm" />

  3. 我的NewForm.aspx页面仍显示默认视图。这适用于基于我的列表模板的新列表和现有列表。我尝试在部署时重新启动IIS,但这没有帮助。

    如果我将模板名称更改为“ListForm”,则会成功覆盖默认模板,我可以看到现有列表和新列表中的更改。

    我在这个网站和Google上寻求帮助,但找不到任何东西。有没有人遇到过这个?

4 个答案:

答案 0 :(得分:2)

确保内容类型中的TemplateName为null或空字符串。 ContentType中定义的TemplateName将覆盖列表架构中定义的任何TemplateName。

仅供参考,开箱即用的内容类型'Item'将NewFormTemplateName设置为'ListForm',这将覆盖列表架构中定义的任何自定义模板名称。

答案 1 :(得分:0)

我猜你在CustomTemplate.ascx中有一个错误 -
你可以发布CustomTempate.ascx的代码吗?

答案 2 :(得分:0)

您执行的所有步骤都是正确的。我过去做过类似的事情,并且成功地让它发挥作用。我建议的一些事情是尝试编写以下代码,看看你得到的模板是什么。

        SPList oList=SPContext.Current.Web.Lists["YourList"];
        Console.WriteLine(oList.Forms[PAGETYPE.PAGE_NEWFORM].TemplateName);

如果上面的代码返回正确的模板名称,则部署/关联没有问题。模板本身有问题。您可以深入了解SharePoint日志。您应该获得更多信息。

答案 3 :(得分:0)

嗯有趣的一点。您是否期望语法错误导致SharePoint回退到默认值而不是抛出错误?

以下是CustomTemplate.ascx文件中的代码:

<%@ Control Language="C#"   AutoEventWireup="false" %>
<%@Assembly Name="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@Register TagPrefix="SharePoint" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" namespace="Microsoft.SharePoint.WebControls"%>
<%@Register TagPrefix="SPHttpUtility" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" namespace="Microsoft.SharePoint.Utilities"%>
<%@ Register TagPrefix="wssuc" TagName="ToolBar" src="~/_controltemplates/ToolBar.ascx" %>
<%@ Register TagPrefix="wssuc" TagName="ToolBarButton" src="~/_controltemplates/ToolBarButton.ascx" %>
<SharePoint:RenderingTemplate ID="CustomListForm" runat="server">
    <Template>
            Test content
    </Template>
</SharePoint:RenderingTemplate>

请注意,我从DefaultTemplates.ascx文件中复制了指令。我的文件位于同一目录中。

非常感谢你的帮助!