我正在尝试将自定义内容类型从一个网站复制到另一个网站。我四处搜寻,发现了一些使用FieldLinks和Fields的示例。我有点迷惑要使用哪个,因为当我从源Web获得FieldLink时,我得到了3个字段。从Fields检索时,仅返回了2个字段...自定义字段丢失。我非常想确保自从我通过界面添加字段以来,就已经添加了适当级别的字段。但是,当使用代码进行检索时……这些数字不会累加。
因此,除了这个奇怪的问题之外,我还想知道FieldLinks和Fields有什么区别,以及在“内容类型”中(以编程方式)处理它们时,我应该使用哪一个?
谢谢。
最佳答案
SPFields本身就是字段,而SPFieldLinks是对字段的引用。 This is a good read that will explain things in detail。通常,在实际内容类型定义上使用时,使用SPFieldLinks更安全。但是,我将在此处给出一个简短的摘要。
列表和网站包含带有字段数据的实际字段。另一方面,内容类型仅包含字段引用,该字段引用仅指向列表或网络中的相应字段。这有点令人困惑,因为内容类型同时具有SPFieldLinkCollection和SPFieldCollection。
SPFieldLinkCollection用于内容类型的实际定义中,是在将内容类型从一个网站复制到另一个网站的情况下要使用的内容。 SPFieldLinks对应于XML Schema中内容类型的实际元素。
相比之下,当您调用内容类型的SPFieldCollection并从中检索字段时,实际发生的情况是该内容类型正在检查相应的字段引用,然后在列表/网站中查找以获取实际的字段。基本上,以与查找工作相同的方式来考虑SPFieldCollection:没有查找值和查找源,它就一文不值。
关于sharepoint - Sharepoint中的FieldLink和Field之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2756759/