我正在将多个用户添加到SharePoint列表中。
然后我需要从事件接收器中读取用户。
使用SharePoint工作正常,因为它传递了用户声明,例如:"-1;#i:0#.w|domain\\alex;#-1;#i:0#.w|domain\\jimmy"
。
其他API会传递用户ID,例如:"10;#;#11;#"
这会破坏事件接收者。
我正在使用SPFieldUserValueCollection来解析输入,声明字符串工作正常,但REST ID已中断。
如何解析两种类型的有效用户组输入?
答案 0 :(得分:0)
希望内置一些东西,因为没有人能回答我只是决定自己解决这个问题。
public static void GetUsersFromIdsAndClaims(this SPFieldUserValueCollection collection, SPWeb web, string inputValue)
{
var values = Regex.Split(inputValue, ";#");
for (var i = 0; i < values.Count(); i += 2)
{
var id = int.Parse(values[i]);
var value = values[i + 1];
var user = id == -1 ? web.EnsureUser(value) : web.SiteUsers.GetByID(id);
collection.Add(new SPFieldUserValue(web, user.ID, user.Name));
}
}
}