如何从Sharepoint CSOM ListItem类获取Document的URL?

时间:2013-12-30 17:54:10

标签: .net sharepoint csom

我需要查询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吗?感谢。

1 个答案:

答案 0 :(得分:2)

经过更多研究后,我发现FileRef字段/列具有可以构建为完整URL的相对URL:

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