2012-01-30 103 views
1

我試圖從列表中加載項目時加載File.ServerRelativeUrl,但沒有運氣。Sharepoint客戶端對象模型:從包含File.ServerRelativeUrl的列表中加載項目

試圖驗證碼:

public IEnumerable<ListItem> EnumListItems(List list, Folder folder) 
{ 
    if (folder == null) 
     return null; 

    var camlQuery = new CamlQuery 
    { 
     // ViewXml = "<View Scope='RecursiveAll'></View>", 
     FolderServerRelativeUrl = folder.ServerRelativeUrl//"Relative path to folder '); -> Add relative Path for your Folder. for e.g. "/Lists/ListName/FolderName" 
    }; 

    var collListItem = list.GetItems(camlQuery); 

    var result = Context.LoadQuery 
    (
     collListItem.Include 
     (
      item => item, 
      item => item.File, 
      item => item.File.ServerRelativeUrl 
      //item => item["Body"] 
     ) 
    ); 

    Context.ExecuteQuery(); 
    return result; 
} 

,但沒有運氣,訪問ServerRelativeUrl當我收到:

'item.File.ServerRelativeUrl' 投擲型Microsoft.SharePoint.Client的」異常。 PropertyOrFieldNotInitializedException'

回答

0

答案是 - 列表不是文檔列表,那麼文件總是爲空並且未初始化。

下面的例子獲得項目attachmetns的相對URL(和我需要什麼,到底)

string.Format(
    @"{0}/Attachments/{1}", 
    list.RootFolder.ServerRelativeUrl, 
    item.Id 
) 

而且list.RootFolder.ServerRelativeUrl由

var result = Context.LoadQuery 
     (
      collList.Include 
      (
       list => list.Title, 
       list => list.Id,      
       list => list.RootFolder, 
       list => list.RootFolder.ServerRelativeUrl, 
       list => list.Fields 
      ) 
     ); 
2

加載希望它可以幫助有人。當爲文檔庫迭代列表項時,可以使用以下示例代碼獲取文件的服務器相對URL:

+1

它解決了我過去兩天查找的問題。 – 2016-08-11 10:18:11

相關問題