我有以下代码,使用.NET Core 2.0控制台应用程序用C#编写。我已经将这些相同的变量用于添加功能,并且一切正常。
GetAsync
工作并撤回列表项。调用UpdateAsync
时,我从Microsoft Graph返回错误:
Messsage: Field 'id' is not recognied
HResult: -2146233088
request-id: 0682cf9f-c828-43f1-bc9e-acb21631a58e
date: 01/11/2017 7:28:38 Ticks 636450912000000000
请注意"识别"是实际的拼写返回
这是我使用的代码:
var listItemId = SharePointIdToInSiteMapping.GetValueOrDefault(siteRecord.InSiteID);
var graphClient = GetGraphClient();
var listItem = await graphClient.Sites[siteId].Lists[listId].Items[listItemId].Request()
.Expand(i = > i.Fields)
.GetAsync();
listItem.Fields.AdditionalData["Title"] = siteRecord.Title;
try
{
var request = graphClient.Sites[siteId].Lists[listId].Items[listItemId].Request();
var result = await request.UpdateAsync(listItem);
Console.WriteLine($"Updated List Item at {result.WebUrl}");
}
catch (Exception e)
{
Console.WriteLine($"Error updating {siteRecord.Title}");
Console.WriteLine(e);
}
对那些有兴趣的人更新的代码
var result = await graphClient.Sites[siteId].Lists[listId].Items[listItemId].Request().UpdateAsync(
new ListItem(){
Fields = new FieldValueSet{
AdditionalData = new Dictionary<string, object>{
{"Title", "A change title"}
}
}
}
);
答案 0 :(得分:2)
此错误的原因是您将整个ListItem
对象传递给UpdateAsync
。由于id
属性是只读的,因此返回错误。
为了向ListItem
发送更新,您应该传入一个新的ListItem
对象,其中只包含您要更改的属性:
var result = await graphClient
.Sites["siteId"]
.Lists["listId"]
.Items["listItemId"]
.Request()
.UpdateAsync(new ListItem()
{
// Properties you wish to change
});