我被要求检索文档库的内容并将其显示在网页上,其中包含使用MVC下载的链接。我可以从库中检索所有文档而没有任何问题。但是,当文档存储在我的文档库的子文件夹中时,我的链接只打开文件夹。
我的文档库结构是
我需要能够从文件夹中获取子文档,而不仅仅是文档库中的文档。
这是我的代码:
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();
}
}
}
任何帮助将不胜感激!
答案 0 :(得分:1)
尝试将query.ViewXml = "<View/>";
更改为query.ViewXml = "<View Scope=\"Recursive\"/>";
这告诉SharePoint返回所有文件夹中的项目。如果您还想要返回文件夹信息,请将Recursive更改为RecursiveAll。