我在网上看到很多博客,文章和讨论让我相信自定义内容类型是SharePoint网站中必须使用的功能 - 特别是在关注SharePoint / MOSS网站的无代码自定义时
然而,在对该主题进行了几个小时的定向研究之后,内容类型(用于列表,而不是用于文档库)的使用对我来说似乎并不那么令人印象深刻:
我错过了什么吗?是否存在一些我没有看到的列表中的自定义内容类型的使用场景,这使它们成为SharePoint必须使用的功能?
答案 0 :(得分:4)
Janis和Alex的观点都很好。以下是我自己的一些内容:
Janis绘制的“阶级”类比是一个很好的类比。内容类型不仅仅是数据 - 它们是与数据相关的行为。这种“行为可移植性”使我们能够停止将SharePoint数据视为仅仅位于列表中。列表限制特别有限;内容类型打破了这种约束。
内容类型本质上是分层的,支持继承(正如Janis所提到的)。您可以根据需要创建复杂的层次结构,就像类层次结构一样。层次继承字段中更深层次的内容类型以及继承链中更高层次的代码相关元素。您可以选择将父行为保留在派生类型中或覆盖它。
我特别喜欢的内容类型(与行为可移植性相关)是指定查看和处理数据的自定义表单的能力。我不是在谈论插入列表表单页面的 FormTemplates ;我说的是你自己的工艺经验。 SharePoint的整个“以列表为中心”的思维方式可以通过精心设计的表单颠倒过来,这些表单通过内容类型的XmlDocument结构中指定的 FormUrl 元素绑定。如果需要,空白ASPX页面将成为您的画布。
在一天结束时,我想它归结为此(对我来说):我可以考虑数据绑定到列表和列表的行为,或者我可以考虑数据在性质上更像OOP内容类型。 Microsoft已经对SharePoint平台中的内容类型进行了大量投资,并且他们为在任何站点的信息体系结构中使用它们提出了强有力的论据。选择不使用它们可能会产生一些惊喜。
以下是一个例子:MOSS记录中心。 MOSS记录中心的“胆量”利用内容类型作为路由和排序机制来简化生活(http://blogs.msdn.com/recman/archive/2006/09/12/750034.aspx)。如果您有大量没有内容类型分类的数据,并且您选择利用记录中心...哎哟。
这是另一个例子:搜索。通过基于内容类型的定义明确的信息体系结构,分区搜索范围可以变得更加容易,因为内容类型几乎可以毫不费力地转换为托管属性。使用我当前的客户端,我们可以轻松识别和分类内容,以便自动包含范围。
极端示例:发布网站。在不使用内容类型的情况下,您甚至无法利用发布网站功能,因为所有发布布局都与内容类型相关联,以便将列表数据与布局占位符对齐。
我可以继续,但希望这可以让您了解哪些内容类型可以作为开发人员和管理员同时为您做。您当然不需要 来使用它们,但它们确实代表了WSSv2 / SPS 2003的特定于列表的数据日的改进。
为了它的价值!
答案 1 :(得分:3)
我认为他们是班级。为什么不对您的数据进行分类?
例如,您可以将context menu items或event listeners或workflows附加到内容类型。或者,如果事实证明您需要其他字段,只需将其添加到内容类型,并将其添加到使用数据的所有位置。
答案 2 :(得分:2)
它们是我必须使用的功能的原因是因为我经常在站点的许多位置部署相同的列表。要更改列表列,我可以更改父内容类型,并更新使用该内容类型的所有列表。
但是Janis says也是关于对数据进行分类的。仔细考虑数据结构并在内容类型中定义它。然后可以在需要的任何地方部署该内容类型,并始终集中更新。这使得数据结构的管理保持一致,可预测和可重复。
这也是一个好兆头,无论是谁开发解决方案,都要注意规划和匹配产品的业务需求。否则它可以表明存在创建临时列表的倾向,这通常最终会成为维护的噩梦。