我在使用自定义控件模板时遇到问题。
我的目的是在NewForm.aspx上使用自定义控件模板作为列表。
我创建了一个CustomTemplate.ascx文件,并将其部署到12/Template/CONTROLTEMPLATES
<SharePoint:RenderingTemplate ID="CustomListForm" runat="server" >...
我修改了列表的schema.xml文件以使用我的自定义模板:
<Form Type="NewForm" Url="NewForm.aspx" WebPartZoneID="Main" Template="CustomListForm" />
我的NewForm.aspx页面仍显示默认视图。这适用于基于我的列表模板的新列表和现有列表。我尝试在部署时重新启动IIS,但这没有帮助。
如果我将模板名称更改为“ListForm”,则会成功覆盖默认模板,我可以看到现有列表和新列表中的更改。
我在这个网站和Google上寻求帮助,但找不到任何东西。有没有人遇到过这个?
答案 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文件中复制了指令。我的文件位于同一目录中。
非常感谢你的帮助!