上一个问题:here被我们的英雄和讨厌的主持人关闭,他们急忙将所有内容标记为错误,但是一旦您对其进行编辑以满足他们的异常需要,就没有人投票重新打开它,因为他们已经做了自己的工作...
因此,请有人可以向我解释如何在SharePoint Online列表中正确创建文件夹吗?
我尝试首先使用C#SDK创建它,但该方法无效。
var folder = new DriveItem
{
Name = plan.Title,
Folder = new Folder()
};
await graphServiceClient
.Sites["ourdomain.sharepoint.com:/sites/ITOddeleni:"]
.Lists["Planner"]
.Drive
.Root
.Children
.Request()
.AddAsync(folder);
然后,我开始使用Graph Explorer,找到该文件夹的ContentType ID,并尝试将其创建为具有指定ContentType的项目。
这是JSON请求标头,它导致在列表中创建文件夹,但是没有名称,因为文件夹在SharePoint中的行为与项目不同。
{
"Title" : "Test2",
"contentType": { "id": "0x012000FC4989A03C9F7845AD8C206E2F47A0FD" }
}
我试图将“名称”,“ FileLeafRef”的“标题”更改为“标题”的Folders内部名称,但无法弄清楚。它接受了所有请求标头,但是创建的文件夹的名称仍然为空。
感谢您的帮助。
编辑:
我尝试了Vadim的建议,并且确实创建了该文件夹,乍一看,它带有您在代码中指定的名称。但它也带有一些生成的名称,请参见图片的右侧。
打开文件夹后,将释放名称,直到刷新文件夹所在级别的页面。这是打开文件夹时的外观。
我还试图在标题之外添加名称/名称,但是它返回 小写和大写“消息:字段'名称'均无法识别”。
答案 0 :(得分:0)
您是否考虑过CSOM还是没有选择? SharePoint Online最佳选择是使用CSOM PnP nuget link
代码应如下所示:
try
{
string siteUrl = "SiteUrl";
AuthenticationManager authManager = new AuthenticationManager();
using (ClientContext context = authManager.GetWebLoginClientContext(siteUrl))
{
List list = context.Web.Lists.GetByTitle("LibName");
context.Load(list);
context.ExecuteQuery();
Folder folder = list.RootFolder.CreateFolder("NewFolder");
}
}
catch (Exception ex)
{
// log error
throw;
}
我已经使用一些控制台应用程序测试了上面的代码,以我为例,结果是
我希望这会有所帮助:)
答案 1 :(得分:0)
似乎可以通过Create item
endpoint来创建 List 中的文件夹,如下所示:
POST https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items
Content-Type: application/json
{
"fields": {
"Title": "Folder name goes here",
},
"contentType": { "id": "0x0120" }
}
其中
ListItem.Fields
property contentType
的{{1}}属性C#示例
0x0120