Share via


PageLayout.AssociatedContentType Property

Gets or sets the associated SPContentType object that is used when creating a PublishingPage object with this PageLayout object.

Namespace:  Microsoft.SharePoint.Publishing
Assembly:  Microsoft.SharePoint.Publishing (in Microsoft.SharePoint.Publishing.dll)

Syntax

'Declaration
Public Property AssociatedContentType As SPContentType
    Get
    Set
'Usage
Dim instance As PageLayout
Dim value As SPContentType

value = instance.AssociatedContentType

instance.AssociatedContentType = value
public SPContentType AssociatedContentType { get; set; }

Property Value

Type: Microsoft.SharePoint.SPContentType
Page content type that is associated with this PageLayout object.

Remarks

This property indicates the content that this PageLayout object can render.

When a PublishingPage object is created based on this PageLayout object, its ContentType is set to the value of this AssociatedContentType, which allows the PublishingPage object to store data that this PageLayout object can render.

The page content type is used when creating a PublishingPage object that uses this PageLayout object.

If no AssociatedContentType has been specified in the PageLayout object, this value defaults to the base 'Page' SPContentType with ID equal to ContentTypeId.Page.

Examples

This sample replaces the PageLayout object for all PublishingPage objects in a Web to a new PageLayout that renders the same type of content.

Before compiling and running this sample, verify that the oldPageLayout and newPageLayout render the same content. They should use the same AssociatedContentType value.

using PublishingPage = Microsoft.SharePoint.Publishing.PublishingPage;
using SPListItem = Microsoft.SharePoint.SPListItem;
using SPFile = Microsoft.SharePoint.SPFile;
using SPModerationStatusType = Microsoft.SharePoint.SPModerationStatusType;
using PublishingWeb = Microsoft.SharePoint.Publishing.PublishingWeb;
using SPUser = Microsoft.SharePoint.SPUser;
using PageLayout = Microsoft.SharePoint.Publishing.PageLayout;
using PublishingPageCollection = Microsoft.SharePoint.Publishing.PublishingPageCollection;

namespace Microsoft.SDK.SharePointServer.Samples
{
    public static class PublishingPageCodeSamples
    {
        public static void SwapPageLayout(PublishingWeb publishingWeb, 
          PageLayout oldPageLayout, PageLayout newPageLayout)
        {
            // TODO: Replace these variable values and input parameters
            // with your own values.
            //
            // The comment to set when the page is checked in, published,
            // and approved.
            string checkInComment = "Your comments";
            //
            // Validate the input parameters.
            if (null == publishingWeb)
            {
                throw new System.ArgumentNullException("publishingWeb");
            }
            if (null == oldPageLayout)
            {
                throw new System.ArgumentNullException("oldPageLayout");
            }
            if (null == newPageLayout)
            {
                throw new System.ArgumentNullException("newPageLayout");
            }
            // Confirm that the oldPageLayout and newPageLayout are compatible.
            if (oldPageLayout.AssociatedContentType.Id != 
              newPageLayout.AssociatedContentType.Id)
            {
                throw new System.ArgumentException(
                    "The page layouts must render the same type of content",
                    "newPageLayout");
            }

            System.Guid oldPageLayoutId = oldPageLayout.ListItem.File.UniqueId;

            // Set the new PageLayout for all pages that use the old PageLayout.
            PublishingPageCollection publishingPages = 
              publishingWeb.GetPublishingPages();
            foreach (PublishingPage publishingPage in publishingPages)
            {
                if (publishingPage.Layout.ListItem.UniqueId == 
                  oldPageLayoutId)
                {
                    if (publishingPage.ListItem.File.CheckOutStatus == 
                      SPFile.SPCheckOutStatus.None)
                    {
                        publishingPage.CheckOut();
                    }

                    publishingPage.Layout = newPageLayout;
                    publishingPage.Update();

                    // The PublishingPage has the same SPContentType as its PageLayout.
                    System.Diagnostics.Debug.Assert(
                        publishingPage.ContentType.Parent.Id ==
                        newPageLayout.AssociatedContentType.Id);

                    publishingPage.CheckIn(checkInComment);
                }
            }

        }

    }
}

See Also

Reference

PageLayout Class

PageLayout Members

Microsoft.SharePoint.Publishing Namespace

Add

SPContentType