0

我被要求檢索文檔庫的內容並將其顯示在網頁上,並使用MVC下載鏈接。我可以毫無問題地從庫中檢索所有文檔。但是,當文檔存儲在我的文檔庫中的子文件夾中時,我的鏈接只能打開文件夾。以編程方式獲取文件夾共享點的子項

我的文檔庫結構是

  • 文檔庫
  • 文獻1
  • 文獻2
  • 文獻3
    • 文件夾1
      • 文獻4
    • 文件夾2
      • 文件5

我需要能夠從文件夾中獲取子文件而不僅僅是文檔庫中的文檔。

這裏是我的代碼:

namespace SharePointMVC.Controllers 
{ 
    [HandleError] 
    public class HomeController : Controller 
    { 
     public ActionResult Index() 
     { 
      DefaultModel model = new DefaultModel(); 
      List<DocumentModel> documents = new List<DocumentModel>(); 
      List<FolderModel> folders = new List<FolderModel>(); 
      List<object> itemModels = new List<object>(); 

      using (ClientContext context = new ClientContext("MYSPSITE")) 

      { 
       List list = context.Web.Lists.GetByTitle("MYDOCUMENTLIBRARY"); 
       context.Load(list); 
       CamlQuery query = new CamlQuery(); 
       query.ViewXml = "<View/>"; 
       ListItemCollection listitems = list.GetItems(query); 

       context.Load(list); 
       context.Load(listitems); 
       context.ExecuteQuery(); 

       foreach (ListItem listItem in listitems) 
       { 
        IEnumerable<object> items = ProcessListItems(listItem); 
        itemModels.AddRange(items); 
       } 

       model.Documents = documents; 
      } 

      return View(model); 
     } 

     public IEnumerable<object> ProcessListItems(ListItem listItem) 
     { 
      List<object> items = new List<object>(); 
      if (listItem.FileSystemObjectType == FileSystemObjectType.Folder) 
      { 
       FolderModel FolderModel = new FolderModel(); 
       foreach (ListItem childListItem in listItem.childItems) 
       { 
        IEnumerable<object> childItems = ProcessListItems(childListItem); 
       } 
       items.Add(FolderModel); 
      } 
      else 
      { 
       DocumentModel documentModel = new DocumentModel(); 
       items.Add(documentModel); 
      } 
     } 

     public ActionResult About() 
     { 
      return View(); 
     } 
    } 
} 

任何幫助將不勝感激!

回答

1

嘗試改變query.ViewXml = "<View/>";query.ViewXml = "<View Scope=\"Recursive\"/>";

這告訴的SharePoint到所有文件夾中恢復的項目。如果您希望返回文件夾信息,請將遞歸更改爲RecursiveAll。

+0

謝謝Rob。我發現這很有用。 –

+0

是否可以在不使用CAML的情況下獲取文件夾的子項目?由於這種方法不適合我的需求。 –

相關問題