2016-07-07 64 views
0

清除「簡單」字符串屬性(例如使用Microsoft Graph .NET Client Library的組的說明)的內容的正確方法是什麼?如何使用Microsoft Graph .NET客戶端庫清除字段

設置一個值,該值是不是空的正常工作與下面的代碼

var patch = new Group(); 
patch.Description = "your description here"; 
var req = new GroupRequest(graphClient.Groups["<group id>"].Request().RequestUrl, graphClient, new List<Option>()); 
req.UpdateAsync(patch).Wait(); 

但是,如果我設置patch.Description來「」我得到一個異常

代碼:Request_BadRequest消息:爲資源「Group」的屬性 'description'指定的值無效。

如果我設置patch.Description的值設置爲null(這已經是集團()的新實例)什麼也不會發生在所有(我也可以看到提琴手,沒有說明不包含在補丁請求的主體)。

所以我的問題是,什麼是清除值的正確方法?

回答

1

清除字符串屬性的正確方法是將其賦值爲空值。由於最近修復的服務問題,您的PATCH請求無法按預期工作。客戶端庫默認情況下不會發送空值。您可以強制它通過使用AdditionalData屬性包發送它:

var groupToUpdate = new Group(); 
//groupToUpdate.Description = "New description"; 
var prop = new Dictionary<string, object>(); 
prop.Add("description", null); 
groupToUpdate.AdditionalData = prop; 
await graphClient.Groups[groupId].Request().UpdateAsync(groupToUpdate); 
+0

感謝您解決這個問題。餘下的問題是,我如何「強制」Microsoft .NET Graph客戶端庫發送這樣的空值?如上所示創建一個空的組對象後,每個屬性都會初始化爲「null」,並且據我所知,只有與null不同的屬性纔會用於創建修補程序請求。 – stefboe

+0

我用示例代碼更新了答案,強制客戶端庫發送空值。 –

1

目前不支持更新說明屬性爲null或爲空。作爲一種解決方法,我們可以將其設置爲空白區域。這是給你參考的樣本:

patch.Description = " "; 

如果你想在微軟圖形支持刪除說明,你可以從here提交反饋。

+0

感謝您的反饋意見。這個建議是在https://officespdev.uservoice.com/forums/224641-general/suggestions/15116220-support-clearing-values-in-graph-api下提交的,以防其他人想要支持它。 – stefboe

+0

進一步調查後,此解決方法不適用於每個字符串屬性。 User.Surname即在傳遞「」時也會給出「無效值」異常。 – stefboe