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的情况下获取文件夹的子项目?由于这种方法不适合我的需求。 –

相关问题