【问题标题】:How can I get a Document's URL from the Sharepoint CSOM ListItem class?如何从 Sharepoint CSOM ListItem 类中获取文档的 URL?
【发布时间】:2014-01-17 15:33:42
【问题描述】:

我需要查询 Sharepoint 2013 文档库并检索列表中字段值等于某个值的所有文档。我正在为此使用 Sharepoint 2013 CSOM 客户端 (Microsoft.SharePoint.Client)。

我可以使用以下代码成功检索除文档 URL 之外的所有 ListItem 字段:

ClientContext spContext = new ClientContext(spDocLibSite);
List cjList = spContext.Web.Lists.GetByTitle(spDocLibTitle);

CamlQuery listItemQuery = CamlQuery.CreateAllItemsQuery(100);
listItemQuery.ViewXml = "ViewXml that limits ListItems returned based on a field val";
ListItemCollection docItems = cjList.GetItems(listItemQuery);

spContext.Load(docItems);
spContext.ExecuteQuery();

foreach (ListItem listItem in docItems)
{
  Console.WriteLine(listItem["Title"]);   //  Works correctly with all fields except URL

  listItem.File.Name or Title;  // Does not work, get field not initialized error
}

File 属性似乎没有关于 Document 的任何数据,当我尝试访问其属性时出现错误。

我没有设置这个文档库,但它似乎是标准的,每个列表项都有一个文档,大约有十几个字段,其中包含有关文档的各种信息。如果我查看库/列表的字段列表,文档/URL 甚至没有列为字段。我能否以某种方式从我已经检索的 ListItem 类中获取文档的 URL?谢谢。

【问题讨论】:

    标签: .net sharepoint csom


    【解决方案1】:

    经过更多研究,我发现 FileRef 字段/列有一个相对 URL,我可以将其构建为完整 URL:

    string spDocUrl = spSiteUri.Scheme + "://" + spSiteUri.Host + listItem["FileRef"];    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-28
      • 1970-01-01
      • 1970-01-01
      • 2021-07-05
      相关资源
      最近更新 更多