2

背景:

我有一个站点,我也部署了我的内容类型,并且该站点有许多子站点。每个子站点将使用内容类型。

我有一个模块,我想在部署和激活我的功能时推送自定义的新建/编辑/显示表单(Web 部件页面)。

我想直接将这些表单设置为内容类型 (FormUrls),但我不知道应该如何或在何处部署表单以便正确引用它们。

我知道如何使用 _layouts 执行此操作,并且我也知道如何使用列表定义架构(设置路径),但由于版本要求,我不能使用其中任何一个(我们尽可能避免使用 _layouts)。我们需要在创建时维护列表和表单历史记录。当新版本的列表/表单发布时,新的内容类型将继承之前的内容类型,新的表单将设置为新的内容类型。

我们也不能使用 Infopath(许可问题)。

我尝试使用模块将表单部署到内容类型(_cts/内容类型名称)的 Url,但我似乎无法正确获取内容类型路径。这是一个简单的例子(我不能给出实际的代码,否则我会,抱歉)。

模块

<Module Name="Module1" Url="_cts/Content Type" RootWebOnly="FALSE">
  <File Path="Module1\MyNewForm.aspx" Url="Module1/MyNewForm.aspx" />
</Module>

内容类型

<FormUrls xmlns="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms/url">
      <New>Module1/MyNewForm.aspx</New>
</FormUrls>

上面的示例不起作用,我尝试删除 Module -> Url 属性,以便将其部署在根目录,但这也没有帮助。对此的任何帮助将不胜感激。

4

1 回答 1

1

您可以将任何共享点库用于存储表单。首先,您需要通过“模块”将页面部署到库/文件夹,elements.xml:

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Module Name="Forms" Url="SiteAssets">
    <File Path="Forms\CustomDisplay.aspx"
     Url="CustomDisplay.aspx" 
     Type="GhostableInLibrary" />
  </Module>
</Elements>

然后它可以被引用为内容类型的表单,elements.xml:

<?xml version="1.0" encoding="utf-8"?>

 <Elements xmlns="http://schemas.microsoft.com/sharepoint/">

 <ContentType ID="0x01080100AB22BE524D7344D89DBB2A27AAF5AB3C00924B45ABBDA240DA8C5B32541E9184AE"
           Name="CTName"
           Group="CustomCTypes"
           Description="Decription"
           Inherits="FALSE"
           Hidden="FALSE"
           Version="0">
<FieldRefs>
</FieldRefs>

<XmlDocuments>
  <XmlDocument NamespaceURI="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms/url">
    <FormUrls  xmlns="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms/url">
      <Display>SiteAssets/CustomDisplay.aspx</Display>
    </FormUrls>
  </XmlDocument>
</XmlDocuments>

于 2012-07-13T18:45:42.647 回答