【问题标题】:Creating list content type using csom使用 csom 创建列表内容类型
【发布时间】:2016-06-19 22:23:24
【问题描述】:

我无法使用以下 sn-p 创建列表内容类型。它会抛出带有附加信息的 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();

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

【问题讨论】:

  • 您得到的错误表明内容类型已创建并附加到列表中,一遍又一遍地运行它会抛出此错误,您是说您已经运行了脚本和内容类型存在但不附加到列表或内容类型甚至没有被创建?
  • 是的,没有创建内容类型。
  • 你在哪里检查?网站设置、内容类型?
  • 在网站内容类型中是的。请注意我的目标是添加列表内容类型...

标签: sharepoint csom


【解决方案1】:

我遇到了同样的问题。

这里发生的情况是您已成功将内容类型添加到列表中,但您尚未在“库设置”>“高级设置”>“第一个设置”中打开“允许管理内容类型”。您不会通过 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() 之前是必不可少的

【讨论】:

    猜你喜欢
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    相关资源
    最近更新 更多