1

我需要遍歷文檔庫的內容並使用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(); 
     } 
    } 
} 

回答

2

我設法解決這個自己。

以我遞歸方法我只是用

context.Load(folder.Folders);

and

context.Load(folder.Files);

這個初始化集合允許我在我的foreach使用它循環

+0

我會強烈建議你閱讀這篇文章在SharePoint客戶端對象模型; http://www.codeproject.com/Articles/268193/SharePoint-2010-Client-Object-Model-Part-1 –