Sharepoint中FieldLinks和Field的区别

8
我正在尝试将自定义内容类型从一个网站复制到另一个网站。我已经搜索了一些使用FieldLinks和Fields的示例,但是不确定该使用哪个。当我从源网站获取FieldLinks时,会得到3个字段;而从Fields中检索只返回2个字段...自定义字段在其中缺失。我非常确定已经按照正确的级别添加了字段,因为我是通过界面完成的。但是,在代码中检索时...数字就不对了。
除了这个奇怪的问题之外,我想知道FieldLinks和Fields之间有什么区别,并且在处理它们的内容类型时(以编程方式),应该使用哪一个?
谢谢。
1个回答

12

SPFields是字段本身,而SPFieldLinks是对这些字段的引用。 这篇文章详细解释了相关内容。在一般实践中,当您正在处理实际内容类型定义时,使用SPFieldLinks更为安全。然而,在此我将快速概括一下。

列表和网站包含具有字段数据的实际字段。另一方面,内容类型仅包含字段引用,它们只是简单地指向列表或网站中相应的字段。这有点令人困惑,因为内容类型既具有SPFieldLinkCollection,又具有SPFieldCollection。

SPFieldLinkCollection用于内容类型的实际定义,并且在从一个网站复制内容类型到另一个网站的情况下,这是您想要使用的内容。 SPFieldLinks对应于内容类型的XML模式中的实际元素。

相比之下,当您调用内容类型的SPFieldCollection并从中检索字段时,实际发生的是内容类型正在检查相应的字段引用,然后在列表/网站中查找实际字段。基本上,将SPFieldCollection视为查找的方式:如果没有查找值和查找源,则它毫无价值。


谢谢您的解释。我的情况是,当我检查内容类型的SPFieldLinks时,我可以看到3个字段链接(这是正确的);但是如果我检查SPField,我只能看到2个字段……缺少自定义列。 - BeraCim
...并且内容类型和列是通过界面添加的,不是通过编程方式添加的,如果有任何区别。 - BeraCim
SP2013文档在此处(请参阅备注)强化了您的观点,因此这仍然是最新的。 - jpaugh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接