我正在试用SharePoint Online的客户端对象模型和应用程序。我可以使用 FieldUserValue 对象从"人员和组"字段中检索信息,但是,如何从中确定输入的值是用户还是 SharePoint 组?
据我所知,FieldUserValue 只有一个 LookupId 和 LookupValue 作为其属性,它没有指定它是否是一个组。我是否走错了路,是否有更好的方法来查询字段并检查值是否是 SharePoint 组的用户?
谢谢
您可以通过
获取User Information List
中列表项的内容类型来确定用户字段值是User
还是Group
:
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";
}