Чтобы сохранить имя пользователя в поле людей:
Предоставил элемент управления редактором людей в моей настраиваемой форме и сохранил каждую разрешенную сущность следующим образом:
if (currentPeopleEditor.Entities.Count != 0)
{
SPFieldUserValueCollection userCollection = new SPFieldUserValueCollection();
for (int index = 0; index < currentPeopleEditor.ResolvedEntities.Count; index++)
{
PickerEntity ObjEntity = (PickerEntity)currentPeopleEditor.ResolvedEntities[index];
userCollection.Add(new SPFieldUserValue(objSPWeb,Convert.ToInt32(ObjEntity.EntityData["SPUserID"]), ObjEntity.Key));
}
newItem[Field.Key.ToString()] = userCollection;
}
Он работал очень хорошо, пока какой-то пользователь не заявил об этом исключении: «Недопустимое значение поиска.
Поле поиска содержит недопустимые данные. Проверьте значение и повторите попытку ».
При исследовании мы обнаружили, что эта ошибка возникла из-за того, что ObjEntity.EntityData ["SPUserID"]) возвращал значение null.
Это произошло потому, что требуется сохранить имена некоторых пользователей, которые не имеют доступа к этому семейству сайтов, но являются членами корпоративной системы AD.