Condividi tramite


SPContentTypeCollection.Add Method

Adds a content type to the collection.

Namespace:  Microsoft.SharePoint
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Available in Sandboxed Solutions: Yes
Available in SharePoint Online

Syntax

'Declaration
<ClientCallableExceptionConstraintAttribute(FixedId := "a", ErrorType := GetType(SPException),  _
    Condition := "A ContentType with the same name exists.", ErrorCode := )> _
<ClientCallableExceptionConstraintAttribute(FixedId := "b", ErrorType := GetType(ServerException),  _
    Condition := "Collection is read only.", ErrorCode := )> _
<ClientCallableMethodAttribute(ReturnObjectIdentity := True, Name := "AddExistingContentType",  _
    AddReturnValueToCollection := True)> _
Public Function Add ( _
    contentType As SPContentType _
) As SPContentType
'Usage
Dim instance As SPContentTypeCollection
Dim contentType As SPContentType
Dim returnValue As SPContentType

returnValue = instance.Add(contentType)
[ClientCallableExceptionConstraintAttribute(FixedId = "a", ErrorType = typeof(SPException), 
    Condition = "A ContentType with the same name exists.", ErrorCode = )]
[ClientCallableExceptionConstraintAttribute(FixedId = "b", ErrorType = typeof(ServerException), 
    Condition = "Collection is read only.", ErrorCode = )]
[ClientCallableMethodAttribute(ReturnObjectIdentity = true, Name = "AddExistingContentType", 
    AddReturnValueToCollection = true)]
public SPContentType Add(
    SPContentType contentType
)

Parameters

Return Value

Type: Microsoft.SharePoint.SPContentType
A fully initialized instance of the content type.

Exceptions

Exception Condition
SPException

contentType is null.

-or-

The content type is already in the collection.

-or-

The collection is ready-only.

Remarks

A content type is not completely initialized until it is added to a content type collection. Among other things, it is assigned a content type ID that is relevant to the collection. For example, when you add a site content type to the content type collection associated with a list, the resulting list content type has a content type ID that is different from the original site content type. For more information, see Site and List Content Types.

Examples

The following example shows a console application that gets a content type from the collection that is returned by the AvailableContentTypes property. It then adds that content type to the collection that is returned by the ContentTypes property of an SPList object.

Imports System
Imports Microsoft.SharePoint

Module ConsoleApp
   Sub Main()
      Using site As SPSite = New SPSite("https://localhost")
         Using web As SPWeb = site.OpenWeb()

            ' Get a content type.
            Dim ct As SPContentType = web.AvailableContentTypes(SPBuiltInContentTypeId.Document)

            If ct IsNot Nothing Then ' We have a content type

               Try ' Get a list.
                  Dim list As SPList = web.Lists("Test List") ' Throws exception if does not exist

                  ' Make sure you can add content types.
                  list.ContentTypesEnabled = True

                  ' Add the content type to the list.
                  If Not list.IsContentTypeAllowed(ct) Then
                     Console.WriteLine("The {0} content type is not allowed on the {1} list", _
                                       ct.Name, list.Title)
                  ElseIf list.ContentTypes(ct.Name) IsNot Nothing Then
                     Console.WriteLine("The content type name {0} is already in use on the {1} list", _
                                       ct.Name, list.Title)
                  Else
                     list.ContentTypes.Add(ct)
                  End If

               Catch ex As ArgumentException ' No list
                  Console.WriteLine("The list does not exist.")
               End Try

            Else ' No content type found.
               Console.WriteLine("The content type is not available in this site.")
            End If

         End Using
      End Using
      Console.Write(vbCrLf + "Press ENTER to continue...")
      Console.ReadLine()
   End Sub
End Module
using System;
using Microsoft.SharePoint;

namespace Test
{
   class ConsoleApp
   {
      static void Main(string[] args)
      {
         using (SPSite site = new SPSite("https://localhost"))
         {
            using (SPWeb web = site.OpenWeb())
            {
               // Get a content type.
               SPContentType ct = web.AvailableContentTypes[SPBuiltInContentTypeId.Document];

               if (ct != null) // We have a content type
               {
                  try // Get a list.
                  {
                     SPList list = web.Lists["Test List"]; // Throws exception if does not exist

                     // Make sure you can add content types.
                     list.ContentTypesEnabled = true;

                     // Add the content type to the list.
                     if (!list.IsContentTypeAllowed(ct))
                        Console.WriteLine("The {0} content type is not allowed on the {1} list",
                                           ct.Name, list.Title);
                     else if (list.ContentTypes[ct.Name] != null)
                        Console.WriteLine("The content type name {0} is already in use on the {1} list",
                                           ct.Name, list.Title);
                     else
                        list.ContentTypes.Add(ct);
                  }
                  catch (ArgumentException ex) // No list is found.
                  {
                     Console.WriteLine("The list does not exist.");
                  }
               }
               else // No content type is found.
               {
                  Console.WriteLine("The content type is not available in this site.");
               }
            }
         }
         Console.Write("\nPress ENTER to continue...");
         Console.ReadLine();
      }
   }
}

See Also

Reference

SPContentTypeCollection Class

SPContentTypeCollection Members

Microsoft.SharePoint Namespace

SPContentType(SPContentTypeId, SPContentTypeCollection, String)

Other Resources

Introduction to Content Types

Site and List Content Types

Base Content Type Hierarchy