Как получить полное имя входа от People Picker с помощью объектной модели?
-
16-10-2019 - |
Вопрос
Используя модель Object, я получил значение от сборщика людей, используя стандартный метод, и возвращает строковое значение, подобное этому:
1#имя пользователя
У меня есть проблема с этим, потому что я ожидал полного имени пользователя, включая домен. Например:
1#myCompanyDomain Имя пользователя
Должен быть способ получить полное имя пользователя и домена с помощью объектной модели, но я не знаю как.
Решение
Я работаю со своим Люди контроль таким образом:
foreach (var loginName in peopleEditor.CommaSeparatedAccounts.Split(';',','))
{
SPUser user = SPContext.Current.Web.EnsureUser(loginName);
// user.LoginName is now returns "domain\login"
}
Этот код отлично работает для меня.
Обновлять:
Примечание 1: Обеспечить облегчение добавите пользователя на ваш сайт (спасибо, Иван Падабед за комментарий). В большинстве случаев это нормально, но лучше помнить об этом.
Заметка 2: Это решение в большинстве случаев наиболее предпочтительнее для меня, чем пугало. ResolvePrincipal. По крайней мере, потому что это доступно в песочнице, а Resulfincipal - нет.
Другие советы
Я считаю, что вы также можете использовать:
SPUtility.ResolvePrincipal(webApp, null, login, SPPrincipalType.User, SPPrincipalSource.All, false);
Тем не менее, это медленнее, чем предложения, использующие обеспечение USER, но вполне пользуется преимуществом, чтобы не добавлять пользователя на сайт, и немного более гибко, если вам нужны такие вещи.