我无法使用以下代码段创建列表内容类型。它会抛出 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。
答案 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()之前都是必不可少的