确定输入的值是用户还是组 - 客户端对象模型

时间:2014-12-18 10:20:33

标签: sharepoint csom sharepoint-online sharepoint-apps

我正在使用客户端对象模型和SharePoint Online应用程序。我可以使用FieldUserValue对象从“人员和组”字段中检索信息,但是,如果输入的值只是用户或SharePoint组,我如何确定?

据我所知,FieldUserValue只有一个LookupId和LookupValue作为其属性,它不指定它是否是一个组。我是否对此采取了错误的方式,是否有更好的方法来查询字段并检查该值是否为SharePoint组的用户?

由于

1 个答案:

答案 0 :(得分:3)

您可以通过在User中获取列表项的内容类型来确定用户字段值是Group还是User Information List

public static string GetUserFieldType(ClientContext ctx,FieldUserValue value)
{
    var userInfoList = ctx.Site.RootWeb.SiteUserInfoList;
    var userInfo = userInfoList.GetItemById(value.LookupId);
    ctx.Load(userInfo,i => i.ContentType);
    ctx.ExecuteQuery();
    return userInfo.ContentType.Name;
}

<强>用法

假设List包含单值User Field,然后:

using (var ctx = new ClientContext(webUrl))
{
      ctx.Credentials = CreateSPOCredentials(userName, password);

      var list = ctx.Web.Lists.GetByTitle(listTitle);
      var listItem = list.GetItemById(itemId);
      ctx.Load(listItem);
      ctx.ExecuteQuery();

      var userVal = listItem[fieldName] as FieldUserValue;
      var type = GetUserFieldType(ctx,userVal);
      var isUser = type == "Person";
      var isGroup = type == "SharePointGroup";

  }