0
我被要求检索文档库的内容并将其显示在网页上,并使用MVC下载链接。我可以毫无问题地从库中检索所有文档。但是,当文档存储在我的文档库中的子文件夹中时,我的链接只能打开文件夹。以编程方式获取文件夹共享点的子项
我的文档库结构是
- 文档库
- 文献1
- 文献2
- 文献3
- 文件夹1
- 文献4
- 文件夹2
- 文件5
- 文件夹1
我需要能够从文件夹中获取子文件而不仅仅是文档库中的文档。
这里是我的代码:
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();
}
}
}
任何帮助将不胜感激!
谢谢Rob。我发现这很有用。 –
是否可以在不使用CAML的情况下获取文件夹的子项目?由于这种方法不适合我的需求。 –