C#从SharePoint 2013文档库中检索文档列表

时间:2017-02-14 18:16:03

标签: c# sharepoint-2013

我想让这很简单。我有一个全新的,全新的asp.net C#网页表单,后面的代码如下所示。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
}

我有一个SharePoint 2013网站,其中包含一些文档库,其中包含一些文档,其中包含几列元数据。

如何在网页上显示它,每个文档的链接以及库中每个文档的列中的元数据。我对集成SharePoint和ASP.Net的任何工作都非常陌生。

请帮忙。

安迪

1 个答案:

答案 0 :(得分:1)

Sharepoint有3个可以使用的API。看看这里:https://msdn.microsoft.com/en-us/library/office/jj164060.aspx

您可能希望通过CSOM库(Microsoft.SharePoint.Client)使用client.svc服务,因为它最容易启动和运行。不要使用旧的asmx api,因为它已被弃用。还有第三个选项 - REST - 但它没有提供CSOM所做的所有功能。

这是一些显示基础知识的粗略代码。代码中没有涉及很多细微差别(SharePoint很复杂),所以你也想在网上找到一些额外的信息。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.SharePoint.Client;

public partial class _Default : System.Web.UI.Page
{
    protected string SiteUrl = "http://mysite.mydomain.com/site";
    protected string LibraryName = "MyList";

    protected void Page_Load(object sender, EventArgs e)
    {
        var context = new ClientContext(SiteUrl);
        context.Load(context.Site);
        context.ExecuteQuery();

        var list = context.Web.Lists.GetByTitle(LibraryName);

        if (list == null)
        {
            throw new ArgumentException(string.Format("List with name '{0}' not found on site '{1}'", LibraryName, SiteUrl));
        }

        context.Load(list, l => l.RootFolder.ServerRelativeUrl);
        context.ExecuteQuery();

        // Empty query. You probably want to filter on something so
        // do a search on "CAML Query". Also watch out for SharePoint
        // List View Threshold which limits # of items that can be retrieved
        var camlQuery = @"<View Scope='All'><Query></Query></View>";

        var items = list.GetItems(camlQuery);
        context.Load(items, l => l.IncludeWithDefaultProperties(i => i.Folder, i => i.File, i => i.DisplayName)); 
        context.ExecuteQuery();

       // Url for first item
       var url = SiteUrl + "/" + LibraryName + "/" + items[0]["Title"]
    }
}