Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在SP List oDat.Type for People属性中创建项_C#_Microsoft Graph Api - Fatal编程技术网

C# 在SP List oDat.Type for People属性中创建项

C# 在SP List oDat.Type for People属性中创建项,c#,microsoft-graph-api,C#,Microsoft Graph Api,我需要使用“人员/人员”字段创建一个项目 我可以填充标题、日期时间、文本字段等字段,如下所示,但我根本无法填充人员字段 我已尝试发送显示名称、用户ID和UPN var fieldValueSet = new FieldValueSet(); fieldValueSet.AdditionalData = new Dictionary<string, object>(); fieldValueSet.AdditionalData.Add("Title@odata.type", "Edm.

我需要使用“人员/人员”字段创建一个项目

我可以填充标题、日期时间、文本字段等字段,如下所示,但我根本无法填充人员字段

我已尝试发送显示名称、用户ID和UPN

var fieldValueSet = new FieldValueSet();
fieldValueSet.AdditionalData = new Dictionary<string, object>();
fieldValueSet.AdditionalData.Add("Title@odata.type", "Edm.String");
fieldValueSet.AdditionalData.Add("Title", task.Title);
fieldValueSet.AdditionalData.Add("Plan@odata.type", "Edm.String");
fieldValueSet.AdditionalData.Add("Plan", plan.Title);
fieldValueSet.AdditionalData.Add("Assigned@odata.type", "Edm.String");
fieldValueSet.AdditionalData.Add("Assigned", assignee.UserPrincipalName);
fieldValueSet.AdditionalData.Add("DueDate@odata.type", "Edm.String");
fieldValueSet.AdditionalData.Add("DueDate", task.DueDateTime);

var listItem = new ListItem
{
   Fields = fieldValueSet
};

await graphServiceClient.Sites["SPURL:/sites/ITOddeleni:"].Lists["ListName"].Items
                                    .Request()
                                    .AddAsync(listItem)
var fieldValueSet=newfieldvalueset();
fieldValueSet.AdditionalData=新字典();
fieldValueSet.AdditionalData.Add(“Title@odata.type“,“Edm.String”);
fieldValueSet.AdditionalData.Add(“Title”,task.Title);
fieldValueSet.AdditionalData.Add(“Plan@odata.type“,“Edm.String”);
fieldValueSet.AdditionalData.Add(“计划”,计划标题);
fieldValueSet.AdditionalData.Add(“Assigned@odata.type“,“Edm.String”);
fieldValueSet.AdditionalData.Add(“已分配”,Assignment.UserPrincipalName);
fieldValueSet.AdditionalData.Add(“DueDate@odata.type“,“Edm.String”);
fieldValueSet.AdditionalData.Add(“DueDate”,task.DueDateTime);
var listItem=新的listItem
{
字段=字段值集
};
等待graphServiceClient.Sites[“Spur:/Sites/ITOddeleni:”]。列出[“ListName”]项
.Request()
.AddAsync(listItem)

您的用户主体名称看起来像电子邮件吗?(例如,
some。person@yourtenant.onmicrosoft.com
)。如果是这种情况,那么您可能应该尝试将其转换为sharepoint声明版本:
i:0#.f | membership | some。dude@yourtenant.onmicrosoft.com

如果应用程序中有经过身份验证的ClientContext,则可以通过调用来解析用户名:
Utility.ResolvePrincipal(context,context.Web,userEmail,PrincipalType.User,PrincipalSource.All,null,true)
如果您没有上下文,那么您可以尝试组合字符串(没有那么健壮,但应该也可以)

建议您尝试为字段设置LookupId值(与使用SharePoint的REST api设置用户值的方式相同):

以下架构允许您插入多个person值: 解决方案 在得到评论的帮助后,我得到了这个有效的答案

{
    "AssignedLookupId@odata.type" : "Collection(Edm.Int32)"
    "AssignedLookupId": [1,2,3]
}

此方法与MS Graph为查找字段返回值的方式一致。

谢谢您的回复,请更正我的UPN看起来像电子邮件地址(经典UPN),我将在周一试一试,会让您知道结果。尝试通过字符串发送。person@yourtenant.onmicrosoft.com但这并没有起作用。稍后将尝试ID。无法使其生效,将不接受i:0#.f |会员资格|一些。dude@yourtenant.onmicrosoft.com:-(还有其他建议吗?是的,我看到了,但我是个白痴……我忘了为SP上的专栏启用多选功能,非常感谢您的帮助:-)现在我只需要从网站集中找到所有的人:-)好的,所有用户部分只是一个列表,我从中提取了用户Id+普通列表中的名称,再次感谢您的帮助:-)
{
    "AssignedLookupId@odata.type" : "Collection(Edm.Int32)"
    "AssignedLookupId": [1,2,3]
}