SPContentType-Klasse
Einen Website oder Liste Inhaltstyp darstellt.
Vererbungshierarchie
System.Object
Microsoft.SharePoint.SPContentType
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
'Declaration
Public NotInheritable Class SPContentType
'Usage
Dim instance As SPContentType
public sealed class SPContentType
Hinweise
Inhaltstypen dienen zum Unterstützen der Benutzer ihre SharePoint-Inhalte auf mehr sinnvolle Weise organisieren. Ein Inhaltstyp ist eine wiederverwendbare Sammlung von Einstellungen, die Sie zu einer bestimmten Kategorie von Inhalten anwenden möchten. Inhaltstypen können Sie die Metadaten und Verhaltensweisen ein anderes Dokument oder Element in einer zentralisierten, wiederverwendbaren Weise verwalten.
Weitere Informationen finden Sie unter Introduction to Content Types.
Beispiele
Das folgende Beispiel ist eine Konsolenanwendung, die einen Inhaltstyp erstellt und fügt es der Websitesammlung Inhaltstyp hinzu. Im nächsten Schritt wird im Beispiel erstellt ein Feld (Spalte) und das Feld mit den neuen Inhaltstyp verknüpft. Schließlich im Beispiel wird eine Liste erstellt und der Inhaltstyp-Auflistung, zu der die Liste gehört den neuen Inhaltstyp hinzugefügt.
Bevor Sie die Anwendung ausführen, müssen Sie dem Projekt einen Verweis auf die Microsoft.Sharepoint.dll hinzuzufügen.
Imports System
Imports Microsoft.SharePoint
Module Test
#Region "fields"
Private requestUrl As String = "https://localhost"
' Name and type of content type to create.
Private ctName As String = "Customer"
Private parentId As SPContentTypeId = SPBuiltInContentTypeId.Contact
' Name and type of site column to create.
Private fldName As String = "LastOrder"
Private fldType As SPFieldType = SPFieldType.DateTime
' Name, type, and description of list to create.
Private lstName As String = "Customers"
Private lstType As SPListTemplateType = SPListTemplateType.Contacts
Private lstDesc As String = "A list of customers."
#End Region
Sub Main()
Using site As SPSite = New SPSite(requestUrl)
Using web As SPWeb = site.OpenWeb()
If ValidNames(web) Then
' Create a new site content type.
Dim cts As SPContentTypeCollection = web.ContentTypes
Dim ct As New SPContentType(cts(parentId), cts, ctName)
' Add the content type to the site collection.
cts.Add(ct)
Console.WriteLine( _
"Added {0} content type to site collection.", ct.Name)
' Create a site field to link to.
Dim fields As SPFieldCollection = web.Fields
fldName = fields.Add(fldName, fldType, False)
Console.WriteLine("Created {0} site column.", fldName)
' Link the content type to the field.
Dim field As SPField = fields.GetField(fldName)
Dim fieldLink As SPFieldLink = New SPFieldLink(field)
ct.FieldLinks.Add(fieldLink)
Console.WriteLine( _
"Linked {0} content type to {1} column.", _
ct.Name, field.InternalName)
' Commit changes to the database.
ct.Update()
' Create a list.
Dim lists As SPListCollection = web.Lists
Dim listID As Guid = lists.Add(lstName, lstDesc, lstType)
Dim list As SPList = lists(listID)
list.OnQuickLaunch = True
list.Update()
Console.WriteLine("Created {0} list.", list.Title)
' Apply the new content type to the list.
list.ContentTypesEnabled = True
If list.IsContentTypeAllowed(ct) Then
' Add the new content type.
Dim lstCT As SPContentType = list.ContentTypes.Add(ct)
' Remove the default content type.
list.ContentTypes(0).Delete()
' Commit changes to the list.
list.Update()
Console.WriteLine("Applied {0} content type to {1} list.", _
lstCT.Name, list.Title)
Else
Console.WriteLine("{0} list does not allow {1} content type.", _
list.Title, ct.Name)
End If
End If
End Using
End Using
Console.Write(vbCrLf + "Press ENTER to continue...")
Console.ReadLine()
End Sub
' Checks for duplicate content type, field, and list names.
Private Function ValidNames(ByRef web As SPWeb) As Boolean
Dim valid As Boolean = True
' Duplicate content type name?
If web.AvailableContentTypes(ctName) IsNot Nothing Then
valid = False
Console.WriteLine("Duplicate content type name.")
End If
' Invalid characters in content type name?
Try
SPContentType.ValidateName(ctName)
Catch ex As SPException
valid = False
Console.WriteLine("Invalid character in content type name.")
End Try
' Duplicate field name?
If web.Fields.ContainsField(fldName) Then
valid = False
Console.WriteLine("Duplicate field name.")
End If
' Duplicate list name?
Try
Dim list As SPList = web.Lists(lstName) ' Exception if not found
valid = False
Console.WriteLine("Duplicate list name.")
Catch ex As ArgumentException
' List name does not exist.
End Try
Return valid
End Function
End Module
using System;
using Microsoft.SharePoint;
namespace Test
{
class ConsoleApp
{
#region fields
private static string requestUrl = "https://localhost";
// Name and type of content type to create.
private static string ctName = "Customer";
private static SPContentTypeId parentId = SPBuiltInContentTypeId.Contact;
// Name and type of site column to create.
private static string fldName = "LastOrder";
private static SPFieldType fldType = SPFieldType.DateTime;
// Name, type, and description of list to create.
private static string lstName = "Customers";
private static SPListTemplateType lstType = SPListTemplateType.Contacts;
private static string lstDesc = "A list of customers.";
#endregion
static void Main(string[] args)
{
using (SPSite site = new SPSite(requestUrl))
{
using (SPWeb web = site.OpenWeb())
{
// Check for duplicate content type, field, and list names.
if (ValidNames(web))
{
// Create a new site content type.
SPContentTypeCollection cts = web.ContentTypes;
SPContentType ct = new SPContentType(cts[parentId], // parent
cts, // collection
ctName); // name
// Add the content type to the site collection.
cts.Add(ct);
Console.WriteLine(
"Added {0} content type to site collection.", ct.Name);
// Create a site field to link to.
SPFieldCollection fields = web.Fields;
fldName = fields.Add(fldName, fldType, false);
Console.WriteLine("Created {0} site column.", fldName);
// Link the content type to the field.
SPField field = fields.GetField(fldName);
SPFieldLink fieldLink = new SPFieldLink(field);
ct.FieldLinks.Add(fieldLink);
Console.WriteLine(
"Linked {0} content type to {1} column.",
ct.Name, field.InternalName);
// Commit changes to the database.
ct.Update();
// Create a list.
SPListCollection lists = web.Lists;
Guid listID = lists.Add(lstName, lstDesc, lstType);
SPList list = lists[listID];
list.OnQuickLaunch = true;
list.Update();
Console.WriteLine("Created {0} list.", list.Title);
// Apply the new content type to the list.
list.ContentTypesEnabled = true;
if (list.IsContentTypeAllowed(ct))
{
// Add the new content type.
SPContentType lstCT = list.ContentTypes.Add(ct);
// Remove the default content type.
list.ContentTypes[0].Delete();
// Commit changes to the list.
list.Update();
Console.WriteLine("Applied {0} content type to {1} list.",
lstCT.Name, list.Title);
}
else
{
Console.WriteLine("{0} list does not allow {1} content type.",
list.Title, ct.Name);
}
}
}
}
Console.Write("\nPress ENTER to continue...");
Console.ReadLine();
}
// Checks for duplicate content type, field, and list names.
static bool ValidNames(SPWeb web)
{
bool valid = true;
// Duplicate content type name?
if (web.AvailableContentTypes[ctName] != null)
{
valid = false;
Console.WriteLine("Duplicate content type name.");
}
// Invalid characters in content type name?
try
{
SPContentType.ValidateName(ctName);
}
catch (SPException ex)
{
Console.WriteLine("Invalid character in content type name.");
}
// Duplicate field name?
if (web.Fields.ContainsField(fldName))
{
valid = false;
Console.WriteLine("Duplicate field name.");
}
// Duplicate list name?
try
{
SPList list = web.Lists[lstName]; // Exception if not found
valid = false;
Console.WriteLine("Duplicate list name.");
}
catch (ArgumentException ex)
{
// List name does not exist.
}
return valid;
}
}
}
Threadsicherheit
Alle öffentlichen static (Shared in Visual Basic) Member dieses Typs sind threadsicher. Die Threadsicherheit von Instanzmembern ist nicht gewährleistet.
Siehe auch
Referenz
Microsoft.SharePoint-Namespace