C# 在SP List oDat.Type for People属性中创建项
我需要使用“人员/人员”字段创建一个项目 我可以填充标题、日期时间、文本字段等字段,如下所示,但我根本无法填充人员字段 我已尝试发送显示名称、用户ID和UPNC# 在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.
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]
}