Baustein: Inhaltstypen

Letzte Änderung: Freitag, 27. Mai 2011

Gilt für: SharePoint Foundation 2010

Inhalt dieses Artikels
Objektmodell für Inhaltstypen
Für Inhaltstypen verwendete XML
Bereiche im Zusammenhang mit Inhaltstypen
Weitere Informationen zu Inhaltstypen

Verfügbar in SharePoint Online

Durch einen Inhaltstyp werden Metadaten, Workflows und Verhaltensweisen für eine Kategorie von Elementen in einer SharePoint Foundation-Liste oder Dokumentbibliothek definiert. Sie können beispielsweise einen Inhaltstyp für Spesenabrechnungen definieren, damit Spesenabrechnungsdokumente immer mit einer bestimmten Microsoft Excel-Vorlage erstellt werden und immer automatisch ein Genehmigungsworkflow gestartet wird, wenn eine neue Spesenabrechnung eingereicht wird. Wenn Sie dann den Inhaltstyp einer Dokumentbibliothek hinzufügen, können die Benutzer eine neue Spesenabrechnung erstellen, indem sie die Option Spesenabrechnung im Menü der Schaltfläche Neues Dokument in der Bibliothek auswählen.

Ein wichtiger Vorteil von Inhaltstypen ist die Möglichkeit, das zugrunde liegende Schema für eine bestimmte Kategorie von Informationen zentral und wiederverwendbar zu verwalten. Inhaltstypen werden unabhängig von Listen oder Dokumentbibliotheken der Website auf Websiteebene definiert. Sie können den gleichen Inhaltstyp für viele verschiedene Listen oder Dokumentbibliotheken einer Website verwenden; in manchen Fällen können Sie einen Inhaltstyp für Listen und Bibliotheken einer gesamten Websitesammlung verwenden. Im Gegenzug können Sie auch mehrere verschiedene Inhaltstypen für die gleiche Liste oder Dokumentbibliothek verwenden. Wenn von einer Liste oder Dokumentbibliothek mehrere Inhaltstypen unterstützt werden, wird jeder Inhaltstyp auf der Schaltfläche Neu angezeigt und kann eindeutige Sätze von Spalten, Workflows und Verhaltensweisen haben.

Die Verfügbarkeit eines Inhaltstyps wird als Bereich bezeichnet. Der Bereich eines Inhaltstyps enthält immer die Website, auf der der Inhaltstyp definiert ist, sowie alle untergeordneten Websites der jeweiligen Website. Stellen Sie sich beispielsweise eine Websitehierarchie vor, in der eine übergeordnete Website mit dem Namen Europa über die untergeordneten Websites Italien, Frankreich und Deutschland verfügt. Neue Inhaltstypen, die der übergeordneten Website Europa hinzugefügt werden, können auf Listen oder Dokumentbibliotheken der Websites Europa, Italien, Frankreich und Deutschland angewendet werden. Da sich der Bereich nach unten durch die Websitehierarchie erstreckt, wird ein Inhaltstyp durch Hinzufügen zur Stammwebsite einer Websitesammlung für Listen und Bibliotheken in der gesamten Websitesammlung verfügbar.

Inhaltstypen werden mithilfe der Vererbungsprinzipien definiert. Sie erstellen nie einen Inhaltstyp von Grund auf. Vielmehr wählen Sie einen vorhandenen Inhaltstyp als Grundlage für einen zu erstellenden neuen Inhaltstyp aus. Wenn Sie einen neuen Inhaltstyp auf der Grundlage eines vorhandenen Inhaltstyps erstellen, erbt der neue Inhaltstyp die Metadaten, Workflows und Verhaltensweisen des übergeordneten Inhaltstyps. Auf diese Weise können Sie Basisinhaltstypen auf ähnliche Weise wie Basisklassen definieren. Sie können beispielsweise einen Inhaltstyp mit dem Namen Financial Document definieren, dessen Merkmale allen finanziellen Dokumenten in der Organisation gemeinsam sind. Dann können Sie Financial Document als Grundlage für zwei neue Inhaltstypen verwenden, Invoice und Purchase Order. Die neuen Inhaltstypen erben Metadaten und Verhaltensweisen von Financial Document, sodass Sie gemeinsame Elemente nur einmal im übergeordneten Inhaltstyp definieren.

Die Funktionsweise dieses Schemas sehen Sie, wenn Sie den Katalog Websiteinhaltstypen unter Websiteeinstellungen betrachten. Der einfachste Inhaltstyp, der auf eine Liste angewendet werden kann, hat den Namen Item. Die Inhaltstypen Announcement, Contact, Task und viele andere erben von Item. Analog ist Document der einfachste Inhaltstyp, der auf eine Dokumentbibliothek angewendet werden kann. Die Inhaltstypen Picture, Form und Wiki Page erben alle von Document.

Beachten Sie, dass Sie beim Erstellen eines neuen Inhaltstyps entscheiden müssen, ob dieser für Listen oder für Dokumentbibliotheken verwendet werden soll. Die einzigen Inhaltstypen, die auf eine Dokumentbibliothek angewendet werden können, sind Inhaltstypen, die von Document erben. Darüber hinaus können Inhaltstypen, die von Item, aber nicht von Document erben, als einzige Inhaltstypen auf eine Liste angewendet werden.

Eine wichtige Abweichung von den Vererbungsprinzipien besteht darin, dass Änderungen an übergeordneten Inhaltstypen nicht automatisch an abgeleitete Inhaltstypen verteilt werden. Die Verteilung von Änderungen erfolgt auf ähnliche Weise wie die Nach-unten-Verteilung von Sicherheitsberechtigungen in der Dateisystemhierarchie in NTFS. Weitere Informationen finden Sie unter Aktualisieren untergeordneter Inhaltstypen.

Objektmodell für Inhaltstypen

SharePoint Foundation enthält ein umfangreiches Objektmodell, das Sie zum Erstellen, Suchen, Hinzufügen, Aktualisieren und Löschen von Inhaltstypen verwenden können. Wenn Sie Code schreiben, der auf dem Server ausgeführt wird, verwenden Sie Elemente des Microsoft.SharePoint-Namespace. Die meisten Typen in diesem Namespace haben Entsprechungen im Microsoft.SharePoint.Client-Namespace, die Sie beim Schreiben von Code, der auf dem Client ausgeführt werden soll, verwenden können.

Suchen von Inhaltstypen

Sie können herausfinden, welche Inhaltstypen zur Verwendung in einem bestimmten Bereich verfügbar sind, indem Sie auf die AvailableContentTypes-Eigenschaft eines SPWeb-Objekts (Server) oder eines Web-Objekts (Client) zugreifen. Von beiden Eigenschaften wird eine schreibgeschützte Auflistung von SPContentType- (Server) oder ContentType-Objekten (Client) zurückgegeben. Die Auflistung ist aufzählbar und hat außerdem mehrere Indexerstellungen, einschließlich des Inhaltstypnamens.

Sie können herausfinden, welche Inhaltstypen auf eine Liste oder Dokumentbibliothek angewendet werden, indem Sie auf die ContentTypes-Eigenschaft eines SPList-Objekts in Servercode oder die gleiche Eigenschaft eines List-Objekts in Clientcode zugreifen. Von dieser Eigenschaft wird eine aufzählbare indizierte Auflistung zurückgegeben, für die in diesem Fall Schreibvorgänge möglich sind.

Beachten Sie, dass beim Anwenden eines Websiteinhaltstyps auf eine Liste oder Dokumentbibliothek nicht tatsächlich der Websiteinhaltstyp, sondern eine Kopie des Websiteinhaltstyps hinzugefügt wird. Außerdem hat die Kopie des Inhaltstyps der Liste einen anderen Inhaltstypbezeichner. Dieser wird vom Bezeichner des Websiteinhaltstyps abgeleitet, ist jedoch nicht mit diesem identisch. Dies bedeutet, dass Sie möglicherweise den gewünschten Inhaltstyp nicht mithilfe eines Inhaltstypbezeichners als Index in einer Auflistung abrufen können. Sie sollten stattdessen die BestMatch-Methode der Auflistung verwenden. Weitere Informationen finden Sie unter Website- und Listeninhaltstypen und Inhaltstyp-IDs.

Wenn Sie wissen möchten, wo ein Websiteinhaltstyp verwendet wird (in einer Liste oder als übergeordneter Websiteinhaltstyp eines anderen Websiteinhaltstyps), können Sie die statische GetUsages(SPContentType)-Methode, ein Element der SPContentTypeUsage-Klasse, aufrufen.

Erstellen neuer Inhaltstypen

Sie können einen benutzerdefinierten Inhaltstyp als Teil eines Features erstellen und bereitstellen. Weitere Informationen zu Features finden Sie unter Baustein: Features.

Platzieren Sie Code zum Erstellen des Inhaltstyps in der FeatureActivated(SPFeatureReceiverProperties)-Methode eines SPFeatureReceiver-Objekts. Wenn für den Inhaltstyp neue Websitespalten verwendet werden, müssen Sie zuerst die Spalten erstellen und bereitstellen, bevor Sie im Inhaltstyp auf diese Websitespalten verweisen. Weitere Informationen zu Spalten finden Sie unter Baustein: Spalten und Feldtypen.

Zum Erstellen eines Inhaltstypobjekts rufen Sie einen der Konstruktoren für die SPContentType-Klasse auf. Ein Parameter beider Konstruktoren ist ein SPContentTypeCollection-Objekt. Dabei handelt es sich um das Objekt, das in der ContentTypes-Eigenschaft des SPWeb-Objekts für die Website zurückgegeben wird, auf der der Inhaltstyp erstellt wird. Obwohl Sie im Konstruktor eine Auflistung von Websiteinhaltstypen angeben können, wird der Inhaltstyp nicht der Auflistung hinzugefügt. Hierzu müssen Sie einen separaten Aufruf der Add-Methode der gleichen Auflistung verwenden.

Hinzufügen und Löschen von Inhaltstypen

Zum Anwenden eines Inhaltstyps auf eine Liste oder Dokumentbibliothek müssen Sie zuerst die AllowContentTypes-Eigenschaft der Liste auf true festlegen und dann die Add-Methode der Auflistung aufrufen, die in der ContentTypes-Eigenschaft des SPList-Objekts (Server) oder des List-Objekts (Client) zurückgegeben wird.

Zum Hinzufügen eines neuen Inhaltstyps zu einer Website rufen Sie die Add-Methode der Auflistung auf, die in der ContentTypes-Eigenschaft eines SPWeb-Objekts (Server) oder eines Web-Objekts (Client) zurückgegeben wird.

Zum Entfernen eines Inhaltstyps aus einer Liste oder Dokumentbibliothek können Sie die Delete-Methode aufrufen und dabei eine SPContentTypeId-Struktur (Server) oder eine ContentTypeId-Struktur (Client) übergeben, durch die der zu löschende Inhaltstyp identifiziert wird. Sie können jedoch nicht einen Inhaltstyp löschen, der verwendet wird. Wenn Sie einen Inhaltstyp aus einer Liste zu entfernen versuchen, müssen Sie zuerst sicherstellen, dass der Inhaltstyp nicht von Listenelementen verwendet wird. Eine Möglichkeit hierzu besteht darin, die Elemente in der Liste zu durchlaufen und den Wert der ContentType-Eigenschaft der einzelnen Elemente zu betrachten. Wenn Sie einen Inhaltstyp aus der Websitesammlung zu entfernen versuchen, in der der Inhaltstyp definiert ist, müssen Sie sicherstellen, dass von der GetUsages-Methode eine leere Liste zurückgegeben wird, das heißt, dass der Inhaltstyp nicht in Listen verwendet wird und nicht einem untergeordneten Inhaltstyp übergeordnet ist.

Aktualisieren von Inhaltstypen

SharePoint Foundation enthält einen Mechanismus zum Steuern von Änderungen an Inhaltstypen über die Eigenschaften ReadOnly und Sealed des SPContentType-Objekts (Server) und des ContentType-Objekts (Client), die Inhaltstypen darstellen. Sie sollten die Einstellungen dieser Eigenschaften überprüfen, bevor Sie einen Inhaltstyp zu ändern versuchen. Weitere Informationen finden Sie unter Steuern von Änderungen am Inhaltstyp.

Platzieren Sie Code zum Aktualisieren des Inhaltstyps in der FeatureActivated(SPFeatureReceiverProperties)-Methode eines SPFeatureReceiver-Objekts. Wenn die Änderungen des Codes an dem Objekt, das den Inhaltstyp darstellt, abgeschlossen sind, führen Sie ein Commit für die Änderungen in der Datenbank aus, indem Sie eine der Überladungen der Update()-Methode des Objekts aufrufen. Sie können optional Änderungen nach unten an abgeleitete Inhaltstypen übertragen. Weitere Informationen finden Sie unter Aktualisieren untergeordneter Inhaltstypen.

Für Inhaltstypen verwendete XML

Sie können einen Inhaltstyp definieren, indem Sie XML in einem Feature verwenden. Weitere Informationen zum für Inhaltstypdefinitionen verwendeten Schema finden Sie unter Inhaltstypdefinitionen. Sie können einen vorhandenen Inhaltstyp einer Liste hinzufügen, wenn Sie die Liste bereitstellen. Weitere Informationen zum Inhaltstypabschnitt des Listenschemas finden Sie unter ContentTypes-Element (Liste).

Ein einfaches Beispiel, in dem die Verwendung von XML mit Inhaltstypen gezeigt wird, finden Sie unter Exemplarische Vorgehensweise: Erstellen eines benutzerdefinierten Felds, eines Inhaltstyps, einer Listendefinition und einer Listeninstanz.

Bereiche im Zusammenhang mit Inhaltstypen

Baustein: Websites und Websitesammlungen

Baustein: Spalten und Feldtypen

Baustein: Workflows

Baustein: Features

Weitere Informationen zu Inhaltstypen

Einführung zu Inhaltstypen

Hierarchie der Basisinhaltstypen

Erstellen von Inhaltstypen

Aktualisieren untergeordneter Inhaltstypen

Vorgehensweise: Hinzufügen eines Inhaltstyps zu einer Liste