C# 如何在子文件夹SharePoint Online C中创建子文件夹#

C# 如何在子文件夹SharePoint Online C中创建子文件夹#,c#,sharepoint,sharepoint-online,C#,Sharepoint,Sharepoint Online,我想在C#中的文档库中创建一些文件夹 文档库中的文件夹结构应如下所示: “98_项目”->“集合命令”->“01测试子文件夹” 在我的C#代码中,我只在“98_Projekte”中创建子文件夹“Muster Mandant”。这是正确的,但我希望以后在“Muster Mandant”中创建新的子文件夹(参见第二个foreach) 您有什么解决方案吗?我认为问题在于,您的代码希望.Folders属性包含所有文件夹(递归),而您只是获取根文件夹的直接子级。在第二个循环中,检查docLibrary.F

我想在C#中的文档库中创建一些文件夹

文档库中的文件夹结构应如下所示:

“98_项目”->“集合命令”->“01测试子文件夹”

在我的C#代码中,我只在“98_Projekte”中创建子文件夹“Muster Mandant”。这是正确的,但我希望以后在“Muster Mandant”中创建新的子文件夹(参见第二个foreach)


您有什么解决方案吗?

我认为问题在于,您的代码希望.Folders属性包含所有文件夹(递归),而您只是获取根文件夹的直接子级。在第二个循环中,检查docLibrary.Folders属性/集合的上下文,并查看返回的内容。

我认为问题在于,您的代码期望.Folders属性包含所有文件夹(递归),而只是获取根文件夹的直接子级。在第二个循环中,检查docLibrary.Folders属性/集合的上下文,并查看返回的内容。

您可以检查以下代码

 public static Folder AddSubFolder(ClientContext context, Folder ParentFolder, string folderName)
        {
            Folder resultFolder=ParentFolder.Folders.Add(folderName);
            context.ExecuteQuery();
            return resultFolder;   
        }

        static void Main(string[] args)
        {
            using (var context = new ClientContext("https://domain.sharepoint.com/sites/TST/"))
            {
                string password = "pw";
                SecureString sec_pass = new SecureString();
                Array.ForEach(password.ToArray(), sec_pass.AppendChar);
                sec_pass.MakeReadOnly();
                context.Credentials = new SharePointOnlineCredentials("lee@domain.onmicrosoft.com", sec_pass);               

                Web web = context.Web;
                var folders = web.DefaultDocumentLibrary().RootFolder.Folders;
                context.Load(folders);
                context.ExecuteQuery();

                foreach (Folder subFolder in folders)
                {
                    if (subFolder.Name == "98_Projekte")
                    {
                       Folder parent1= AddSubFolder(context,subFolder,"Muster Mandant");
                       AddSubFolder(context, parent1, "01 Test Subfolder");   
                    }
                }

                Console.WriteLine("Done");
                Console.ReadKey();
            }

        }

您可以检查下面的代码

 public static Folder AddSubFolder(ClientContext context, Folder ParentFolder, string folderName)
        {
            Folder resultFolder=ParentFolder.Folders.Add(folderName);
            context.ExecuteQuery();
            return resultFolder;   
        }

        static void Main(string[] args)
        {
            using (var context = new ClientContext("https://domain.sharepoint.com/sites/TST/"))
            {
                string password = "pw";
                SecureString sec_pass = new SecureString();
                Array.ForEach(password.ToArray(), sec_pass.AppendChar);
                sec_pass.MakeReadOnly();
                context.Credentials = new SharePointOnlineCredentials("lee@domain.onmicrosoft.com", sec_pass);               

                Web web = context.Web;
                var folders = web.DefaultDocumentLibrary().RootFolder.Folders;
                context.Load(folders);
                context.ExecuteQuery();

                foreach (Folder subFolder in folders)
                {
                    if (subFolder.Name == "98_Projekte")
                    {
                       Folder parent1= AddSubFolder(context,subFolder,"Muster Mandant");
                       AddSubFolder(context, parent1, "01 Test Subfolder");   
                    }
                }

                Console.WriteLine("Done");
                Console.ReadKey();
            }

        }

好的,我明白了。我必须使用两个函数来获得正确的顺序,而不是两个分开的foreach循环。你的代码工作正常,谢谢!好的,我明白了。我必须使用两个函数来获得正确的顺序,而不是两个分开的foreach循环。你的代码工作正常,谢谢!