使用客户端对象模型将用户添加到UserMulti字段类型

ste*_*enl 2 sharepoint-2010 sharepoint-clientobject

我有点像SharePoint noobie所以请耐心等待.

我需要能够使用客户端对象模型在我们的自定义列表中创建一个新的列表项.我一直在关注MSDN网站上描述的示例,并且大多数情况下这都有效.

我们有一个包含多个字段的列表,包括UserMulti字段类型.我在向此字段添加用户时遇到问题.到目前为止,我已经尝试了以下内容,但这似乎总是默认为系统帐户而不是字段中指定的用户.

   ...
   listItem["ProjectMembers"] = "1;#domain\\johndoe";
   listItem.Update();
   _clientContext.ExecuteQuery();
Run Code Online (Sandbox Code Playgroud)

我是否需要先进行某种类型的查找?任何帮助表示赞赏.谢谢.

ste*_*enl 5

花了一点时间,但我最终弄明白了.以下是您可以采取的两种方法

  1. 将主体分配给列表项

        var principal = _rootWeb.EnsureUser("domain\\johndoe") as Principal;
        listItem["ProjectMembers"] = principal;
        listItem.Update();
        _clientContext.ExecuteQuery();
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果需要为该字段分配多个用户,请分配FieldUserValue列表.

        string[] users = { "domain\\johndoe", "domain\\peterpan" };
        var projectMembers = users
            .Select(loginName => FieldUserValue.FromUser(loginName))
            .ToList();
    
        listItem["ProjectMembers"] = projectMembers;
        listItem.Update();
        _clientContext.ExecuteQuery();
    
    Run Code Online (Sandbox Code Playgroud)

我确信有更好的处理方法,你可以将两者结合起来以确保用户在将它们添加到列表之前是有效的,但到目前为止这是有效的.希望这有助于其他人.