7

我创建了一个继承自 OOTB SharePoint图片内容类型的自定义内容类型。我所做的唯一自定义是添加一个简单的 URL 字段,并删除基本类型上的两个字段。见下文:

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
    <!-- Parent ContentType: Picture (0x010102) -->
    <ContentType ID="0x0101020027f16ab27e6e45a6848c25c47aaa7053"
                 Name="Custom Picture"
                 Description=""
                 Group="Custom"
                 Inherits="TRUE"
                 Version="0">
        <FieldRefs>
            <RemoveFieldRef ID="{b66e9b50-a28e-469b-b1a0-af0e45486874}" Name="Keywords" />
            <RemoveFieldRef ID="{a5d2f824-bc53-422e-87fd-765939d863a5}"  Name="ImageCreateDate" />
            <FieldRef ID="{c29e077d-f466-4d8e-8bbe-72b66c5f205c}" Name="URL" DisplayName="URL" Required="FALSE" />
        </FieldRefs>
    </ContentType>
</Elements>

如果我根据我的自定义内容类型创建图片库,我添加的“URL”字段会出现在新/编辑表单中,但是我尝试删除的两个字段也会显示,即RemoveFieldRef 被忽略。如果我查看"Site Settings -> Content Type Gallery"中的内容类型,这两个字段仍然列在那里。

在我的自定义内容类型上设置Inherits="FALSE" (请参阅 MSDN 定义)成功地从“站点设置 - > 内容类型库”页面中删除了这两个字段,但是新/编辑表单中不会显示任何基本字段-- 只有我的自定义“URL”字段。

我可以做些什么来确保基本“图片”内容类型中的所有字段都显示在我的图片库的新/编辑表单上,除了我专门删除的两个字段?

4

1 回答 1

1

我相信这个问题的本质是对内容类型继承如何工作的理解。

来自 MSDN ( http://msdn.microsoft.com/en-us/library/aa544268.aspx )

如果 Inherits 为 TRUE,则子内容类型继承父项中的所有字段,>包括用户添加的字段。

如果 Inherits 为 FALSE 或不存在且父内容类型是内置类型,则子 >content 类型仅继承安装 >SharePoint Foundation 时父内容类型中的字段。子内容类型没有 >users 添加到父内容类型的任何字段。

如果 Inherits 为 FALSE 或不存在,并且父内容类型由沙盒 > 解决方案提供,则子项不会从父项继承任何字段。

我认为上面的关键词是“如果 Inherits 为 TRUE,则子内容类型继承父项中的所有字段,包括用户添加的字段。”

这意味着为了完成您打算做的事情,您将继承设置为 false,并且您必须为您希望在内容类型中使用的所有字段包含 FieldRef 元素。

您没有参考/不包含有关如何将内容类型添加到列表实例的代码。确保这已更新以支持将继承删除或设置为 false。

这些站点支持此处描述的内容。

于 2012-01-23T20:42:29.593 回答