Определение, является ли введенное значение пользователем или группой - объектная модель на стороне клиента

Я поэкспериментирую с объектной моделью на стороне клиента и приложениями для SharePoint Online. Я могу получить информацию из поля "Персона и группы" с помощью объекта FieldUserValue, однако как я могу из этого определить, является ли введенное значение просто пользователем или группой SharePoint?

Насколько я могу судить, FieldUserValue имеет только LookupId и LookupValue в качестве своих свойств, которые не указывают, является ли она группой или нет. Неправильно ли я поступил по этому поводу, и есть ли гораздо лучший способ опроса поля и проверки, является ли значение пользователем группы SharePoint?

Спасибо

1 ответ

Вы можете определить, является ли значение поля пользователя 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;
}

использование

Предположим, что список содержит однозначное поле пользователя, а затем:

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";

  }
Другие вопросы по тегам