SPWeb.AvailableContentTypes Property
Gets the collection of all content types that apply to the current scope, including those of the current Web site, as well as any parent Web sites.
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
Public ReadOnly Property AvailableContentTypes As SPContentTypeCollection
Get
Dim instance As SPWeb
Dim value As SPContentTypeCollection
value = instance.AvailableContentTypes
public SPContentTypeCollection AvailableContentTypes { get; }
Property Value
Type: Microsoft.SharePoint.SPContentTypeCollection
An SPContentTypeCollection object that represents the content types.
Remarks
You can apply any content type that is returned in this collection to lists in the current Web site. However, you cannot add content types to the collection that is returned in this property. It is a read-only property.
If you want to make a new content type available, you must add it to the collection that is returned by the ContentTypes property. That collection includes only the content types that exist in the current Web site.
Examples
The following example shows a console application that gets a content type from the collection that is returned by the AvailableContentTypes property, and then applies it to a list in the current Web site.
Imports System
Imports Microsoft.SharePoint
Module ConsoleApp
Sub Main()
Using site As SPSite = New SPSite("http://siteUrl")
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 we 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
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("http://siteUrl"))
{
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 we 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
{
Console.WriteLine("The list does not exist.");
}
}
else // No content type
{
Console.WriteLine("The content type is not available in this site.");
}
}
}
Console.Write("\nPress ENTER to continue...");
Console.ReadLine();
}
}
}