В Sharepoint 2013 я попытался получить информацию о пользователе из настраиваемого списка для отображения в форме редактирования, которая будет отображаться в элементе управления ClientPeoplePicker.
Я поискал и попробовал два решения:
private void LoadUserToPeoplePicker(SPListItem item, string colName, ClientPeoplePicker peoplePicker)
{
//Get user information from list
var user = item[colName] as string;
if (!string.IsNullOrEmpty(user))
{
var spUser = new SPFieldUserValue(SPContext.Current.Web, user);
//Solution 01
var entity = new PickerEntity();
entity.Key = spUser.LookupValue;
PeopleEditor editor = new PeopleEditor();
entity = editor.ValidateEntity(entity);
peoplePicker.AddEntities(new List<PickerEntity> { entity });
//Solution 02
//if (!string.IsNullOrEmpty(spUser.User.Email))
//{
// peoplePicker.InitialUserAccounts = spUser.User.Email;
//}
}
}
Я вызываю их вместо формы Nintex: защищенное переопределение void OnFormControlDataBinding (отправитель объекта, EventArgs e)
Вот ошибка, которую я получил:
Введите «Microsoft.SharePoint.SPUser» в сборку «Microsoft.SharePoint, Version = 15.0.0.0, Culture = нейтральный, PublicKeyToken = 71e9bce111e9429c» не помечен как сериализуемый.
Описание: необработанное исключение произошло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительных сведений об ошибке и ее происхождении в коде.
Сведения об исключении: System.Runtime.Serialization.SerializationException: введите «Microsoft.SharePoint.SPUser» в сборке «Microsoft.SharePoint, версия = 15.0.0.0, культура = нейтральный, PublicKeyToken = 71e9bce111e9429c» не помечен как сериализуемый.
Ошибка источника:
Необработанное исключение было создано во время выполнения текущего веб-запроса. Информацию о происхождении и местонахождении исключения можно определить с помощью трассировки стека исключений ниже.
Трассировки стека:
[SerializationException: введите «Microsoft.SharePoint.SPUser» в сборку «Microsoft.SharePoint, Version = 15.0.0.0, Culture = нейтральный, PublicKeyToken = 71e9bce111e9429c» не помечен как сериализуемый.] System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers (RuntimeableMembers type) +14210117 System.Runtime.Serialization.FormatterServices.GetSerializableMembers (тип типа, контекст StreamingContext) +408 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo () +420 System.RunormObjectInfo.InitMemberInfo () +420 System. .InitSerialize (Object obj, ISurrogateSelector surrogateSelector, контекст StreamingContext, SerObjectInfoInit serObjectInfoInit, преобразователь IFormatterConverter, ObjectWriter objectWriter, связыватель SerializationBinder) +532 System.Runtime.Serialization.Formatters.BjectSelector (объектный объект) serObjectInfoInit, IFormatterConverter преобразователь, ObjectWriter objectWriter, связыватель SerializationBinder) +270 System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize (Граф объекта, Заголовок [] inHeaders, __BinaryWriter serWriter, Boolean fCheck) +814 System.Runorm.Sattersialization.F. BinaryFormatter.Serialize (Stream serializationStream, Граф объектов, Заголовки Header [], Boolean fCheck) +322 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize (Stream serializationStream, Граф объектов) +17 System.Web.UI.ObjectStateFormatter. SerializeValue (писатель SerializerBinaryWriter, значение объекта) +3526
[ArgumentException: Ошибка сериализации значения 'i: 0 # .w | fsoft.fpt.vn \ hoavt2' типа 'Microsoft.SharePoint.SPUser.'] System.Web.UI.ObjectStateFormatter.SerializeValue (средство записи SerializerBinaryWriter, значение объекта) + 4068 System.Web.UI.ObjectStateFormatter.Serialize (StateGraph объекта, назначение цели) +103 System.Web.UI.Util.SerializeWithAssert (средство форматирования IStateFormatter2, StateGraph объекта, назначение цели) +67 System.Web.UI.HiddenFieldPageStatePers ) +173 System.Web.UI.Page.SaveAllState () +1161 System.Web.UI.Page.ProcessRequestMain (логическое includeStagesBeforeAsyncPoint, логическое includeStagesAfterAsyncPoint) +4660
Кто-нибудь сталкивается с этой проблемой, пожалуйста, помогите.