SharePoint 2010: RemoveFieldRef and Inherits = "TRUE" - PullRequest
7 голосов
/ 23 февраля 2011

Я создал пользовательский тип контента, который наследуется от типа контента OOTB SharePoint Picture . Единственные настройки, которые я сделал, это добавить простое поле 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 игнорируются . Если я посмотрю на тип контента в «Настройки сайта -> Галерея типов контента» , эти два поля все еще там перечислены.

Настройка Inherits = "FALSE" для моего пользовательского типа контента ( см. Определение MSDN ) успешно удаляет только эти два поля с сайта " Настройки -> Галерея типов контента " страница, однако тогда нет базовых полей отображаются в новых / редактируемых формах - только мое настраиваемое поле" URL ".

Что я могу сделать, чтобы все поля из базового типа контента "Изображение" отображались в новых / редактируемых формах моей библиотеки изображений, кроме двух полей, которые я специально удалил?

1 Ответ

1 голос
/ 24 января 2012

Я полагаю, что в основе этой проблемы лежит понимание того, как работает наследование типов контента.

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

Если Inherits равен TRUE, дочерний контентtype наследует все поля родительского типа, включая поля, добавленные пользователями.

Если Inherits имеет значение FALSE или отсутствует, а родительский тип содержимого является встроенным, дочерний> тип содержимого наследует толькополя, которые были в родительском типе контента при установке> SharePoint Foundation. Дочерний тип контента не имеет полей, добавленных пользователями в родительский тип контента.

Если Inherits имеет значение FALSE или отсутствует и родительский тип контентатип содержимого был предоставлен в изолированном> решении, дочерний элемент не наследует никаких полей от родительского.

Я думаю, что ключевая фраза выше: «Если Inherits равен TRUE, дочерний тип содержимого наследует ВСЕ полякоторые находятся в родительском элементе, включая поля, добавленные пользователями. "

Это означает, что для выполнениято, что вы намеревались сделать, у вас будет наследовать значение false, и вам придется включать элементы FieldRef для всех полей, которые вы хотите использовать в своем типе контента.

Вы не делаете ссылки / не включаете код длякак тип контента был добавлен в ваш экземпляр списка.Убедитесь, что он был обновлен для поддержки удаления или установки наследования в значение false.

Эти сайты поддерживают то, что описано здесь.

...