1

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

我的意图是在 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" />

但是,我的 NewForm.aspx 页面仍然显示默认视图。这适用于基于我的列表模板的新列表和现有列表。我曾尝试围绕部署重新启动 IIS,但这无济于事。

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

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

4

4 回答 4

2

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

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

于 2009-08-25T01:20:03.890 回答
0

我猜您在 CustomTemplate.ascx 某处有错误-
您可以发布 CustomTempate.ascx 的代码吗?

于 2009-08-24T11:54:34.507 回答
0

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

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

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

于 2009-08-24T12:19:29.170 回答
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 文件中复制了指令。我的文件位于同一目录中。

非常感谢您的帮助!

于 2009-08-24T12:38:34.247 回答