使用csom创建列表内容类型

时间:2016-03-06 10:13:33

标签: sharepoint csom

我无法使用以下代码段创建列表内容类型。它会抛出 ServerException 并附加其他信息 - “网站内容类型已添加到此列表中。

       var list =  clientContext.Web.Lists.GetByTitle("sometitle");
       var documentCT = clientContext.Web.ContentTypes.GetById("0x0101");
       clientContext.Load(list,l=> l.ContentTypes);
       clientContext.Load(documentCT);
       clientContext.ExecuteQuery();

       var test = new ContentTypeCreationInformation(){
            Name = "TestCT", ParentContentType =documentCT };

       list.ContentTypes.Add(test);

       list.Update();
       clientContext.ExecuteQuery();

基本上,我想创建一个列表内容类型,其父级是“Document”CT。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。

这里发生的事情是您已成功将内容类型添加到列表中,但尚未在“库设置”>“高级设置”>“第一个设置”中启用“允许管理内容类型”。您不会通过UI看到内容类型。

启用此设置后,您会看到实际上已添加了内容类型。

这是我创建图书馆的方式

public static List CreateLibrary(ClientContext context, string title, bool allowContentTypes)
    {
        ListCreationInformation lci = new ListCreationInformation
        {
            Description = "Library used to hold Dynamics CRM documents",
            Title = title,
            TemplateType = 101,

        };

        List lib = context.Web.Lists.Add(lci);
        lib.ContentTypesEnabled = allowContentTypes ? true : false;
        lib.Update();
        context.Load(lib);
        context.ExecuteQuery();

        return lib;

    }

对于您的情况,只需添加以下行:

list.ContentTypesEnabled = true;

别忘了list.Update(),我发现您的代码中已经包含了它,但是对于其他任何人,这部分在您使用ExecuteQuery()之前都是必不可少的