Sharepoint 使用递归以编程方式获取文档库的子级

Sharepoint 使用递归以编程方式获取文档库的子级,sharepoint,recursion,sharepoint-2010,sharepointdocumentlibrary,Sharepoint,Recursion,Sharepoint 2010,Sharepointdocumentlibrary,我需要递归浏览文档库的内容,并使用MVC将它们显示在网页上。但是,我在尝试运行代码时遇到以下错误:“集合尚未初始化。尚未请求该集合,或者尚未执行该请求。可能需要显式请求该集合。” 任何帮助都将不胜感激 这是我的密码: public class HomeController : Controller { public ActionResult Index() { DefaultModel model = new DefaultMode

我需要递归浏览文档库的内容,并使用MVC将它们显示在网页上。但是,我在尝试运行代码时遇到以下错误:“集合尚未初始化。尚未请求该集合,或者尚未执行该请求。可能需要显式请求该集合。”

任何帮助都将不胜感激

这是我的密码:

public class HomeController : Controller
    {
        public ActionResult Index()
        {
            DefaultModel model = new DefaultModel();


            using (ClientContext context = new ClientContext("MySPSite"))
            {
                List list = context.Web.Lists.GetByTitle("DocumentLibrary");
                Folder rootFolder = list.RootFolder;

                IEnumerable<SharePointItemBaseModel> items = ProcessFolder(rootFolder);
                model.items.AddRange(items);
            }

            return View(model);
        }

        public IEnumerable<SharePointItemBaseModel> ProcessFolder(Folder folder)
        {
            List<SharePointItemBaseModel> listItems = new List<SharePointItemBaseModel>();
            foreach (Folder childFolder in folder.Folders)
            {
                FolderModel folderModel = new FolderModel();
                IEnumerable<SharePointItemBaseModel> childFolders = ProcessFolder(childFolder,context);
                folderModel.Items.AddRange(childFolders);
                listItems.Add(folderModel);
            }

            foreach (Microsoft.SharePoint.Client.File file in folder.Files)
            {
                DocumentModel documentModel = new DocumentModel();
                documentModel.Name = file.Title;
                documentModel.modifiedBy = file.ModifiedBy.ToString();
                listItems.Add(documentModel);
            }

            return listItems;
        }

        public ActionResult About()
        {
            return View();
        }
    }
}
公共类HomeController:控制器
{
公共行动结果索引()
{
DefaultModel=新的DefaultModel();
使用(ClientContext=newclientcontext(“MySPSite”))
{
List List=context.Web.Lists.GetByTitle(“DocumentLibrary”);
Folder rootFolder=list.rootFolder;
IEnumerable items=ProcessFolder(rootFolder);
model.items.AddRange(items);
}
返回视图(模型);
}
公用IEnumerable进程文件夹(文件夹)
{
List listItems=新列表();
foreach(Folder.Folders中的文件夹childFolder)
{
FolderModel FolderModel=新FolderModel();
IEnumerable childFolders=ProcessFolder(childFolder,上下文);
folderModel.Items.AddRange(子文件夹);
添加(folderModel);
}
foreach(文件夹.Files中的Microsoft.SharePoint.Client.File文件)
{
DocumentModel DocumentModel=新的DocumentModel();
documentModel.Name=file.Title;
documentModel.modifiedBy=file.modifiedBy.ToString();
添加(文档模型);
}
返回列表项;
}
关于()的公共行动结果
{
返回视图();
}
}
}

我自己设法解决了这个问题

在我的递归方法中,我只使用了

加载(folder.Folders)

加载(文件夹文件)


这初始化了集合,允许我在foreach循环中使用它

我强烈建议阅读这篇关于SharePoint客户端对象模型的文章;