Я посреди попытки скопировать пользовательский тип контента от одной сети до другого. Я погуглил вокруг и нашел некоторые примеры, которые используют FieldLinks и Поля. Я отчасти потерян, относительно которого использовать, с тех пор когда я получаю FieldLinks от своей исходной сети, я получаю 3 поля; в то время как получение от Полей только возвратило меня 2 поля... пользовательское поле отсутствует. Я довольно проклятый уверенный, что я добавил поля на надлежащем уровне, так как я сделал это через интерфейс. Но при получении его с помощью кода... числа просто не складывают.
Таким образом, кроме того, от той странной проблемы, я хочу знать то, что различие между FieldLinks и Полями, и при контакте с ними в Типах контента (программно), какой я должен использовать?
Спасибо.
SPFields - это сами поля, а SPFieldLinks - ссылки на поля. Это хорошее чтение, которое объяснит все в деталях. В общей практике безопаснее использовать SPFieldLinks, когда вы работаете над фактическим определением типа содержимого. Тем не менее, я приведу здесь краткое резюме.
Списки и паутины содержат фактические поля с данными полей. Тип содержимого, с другой стороны, содержит только ссылку на поле, которая просто указывает на соответствующее поле в списке или сети. Это приводит к некоторой путанице, поскольку типы содержимого имеют как SPFieldLinkCollection, так и SPFieldCollection.
Коллекция SPFieldLinkCollection используется в фактическом определении типа содержимого, и это то, что вы хотели бы использовать в ситуации копирования типа содержимого из одной веб-страницы в другую. SPFieldLinks соответствуют фактическим элементам в XML Schema для типа содержимого.
Сравнительно, когда вы вызываете SPFieldCollection типа содержимого и извлекаете из него поле, на самом деле происходит то, что тип содержимого проверяет соответствующую ссылку на поле, а затем ищет в списке/вебе фактическое поле. В общем, думайте о SPFieldCollection так же, как о поиске: она бесполезна без значения поиска и источника поиска.