4

有谁知道如何使用 REST 保存 Person 字段?

我尝试了以下方法并且有效:

{ 
   "__metadata": { "type": "SP.Data.SomeListListItem" } , 
   "MyPersonFieldId" : 1
}

但这只有在您知道 ID 时才有效。我没有那个!我怎么才能得到它?我有钥匙是i.0#w|domain\userName

我尝试了以下方法,但它也不起作用:

{ 
   "__metadata": { "type": "SP.Data.SomeListListItem" } , 
   "MyPersonField" : { "__metadata": { "type": "SP.Data.UserInfoItem" }, "Name": "i.0#w|domain\userName" }
}

有任何想法吗??谢谢!

4

3 回答 3

5

我没有对 Person 字段执行此操作,但我确实对托管元数据字段执行了类似的操作。我基本上必须将附加信息作为对象传递,才能在字段中创建值。

查看是否将用户的 ID 与名称一起传递。我将自己尝试这个,因为我有同样的需要。

{
     "MyPersonField": { "Name": "i.0#w|domain\userName", "ID": 1 }
}

编辑:好的,更新这个字段比我想象的要容易。我可以通过简单地将用户的 ID 传递给 Id 字段来执行更新:

{
     "MyPersonFieldId": 1
}

这意味着用户应该已经在网站集中,因此如果用户不存在,请求将失败。

于 2014-09-25T19:59:43.040 回答
0

问题是用户信息是一个查找字段,因此MyPersonField如果您使用 OData 端点,您的 SharePoint 列表中不存在,我真的不知道如何保存数据,但是当我尝试读取用户时,同样的问题发生在我身上。

例如 {server}/{api}/list/getbytitle('mylist')/items不返回MyPersonField而不是返回MyPersonFieldId

但是如果我们使用:

{server}/{api}/list/getbytitle('mylist')/items/?$select=*,MyPersonField/Name&$expand=MyPersonField

我们能够使用MyPersonField查找值。

于 2013-03-08T21:37:36.077 回答
0

使用以下代码获取当前用户 ID 以将用户保存在人员和组列下。人员列名称为Requestor。但是要保存用户,我们必须将列名指定为RequestorId

var userid = _spPageContextInfo.userId; // To get current user ID
var itemProperties={'Title':vTitle,'RequestorId':userid};
于 2016-08-18T09:37:46.803 回答