【发布时间】:2016-01-02 03:34:04
【问题描述】:
在 Sharepoint 2013 中, 我试图从自定义列表中获取用户信息以显示在编辑表单中,这将显示在控件 ClientPeoplePicker 中。
我四处搜索并尝试了 2 个解决方案:
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 表单的覆盖中调用它们:protected override void OnFormControlDataBinding(object sender, EventArgs e)
这是我得到的错误:
在程序集“Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”中键入“Microsoft.SharePoint.SPUser”未标记为可序列化。
说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.Runtime.Serialization.SerializationException:在程序集“Microsoft.SharePoint,版本=15.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c”中键入“Microsoft.SharePoint.SPUser”未标记为可序列化。
来源错误:
在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常来源和位置的信息。
堆栈跟踪:
[SerializationException:在程序集“Microsoft.SharePoint,版本=15.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c”中的类型“Microsoft.SharePoint.SPUser”未标记为可序列化。] System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(RuntimeType 类型)+14210117 System.Runtime.Serialization.FormatterServices.GetSerializableMembers(类型类型,StreamingContext 上下文)+408 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() +420 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(对象 obj,ISurrogateSelector surrogateSelector,StreamingContext 上下文,SerObjectInfoInit serObjectInfoInit,IFormatterConverter 转换器,ObjectWriter objectWriter,SerializationBinder binder)+532 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.Serialize(对象 obj,ISurrogateSelector surrogateSelector,StreamingContext 上下文,SerObjectInfoInit serObjectInfoInit,IFormatterConverter 转换器,ObjectWriter objectWriter,SerializationBinder binder)+270 System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck) +814 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean fCheck) +322 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) +17 System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter writer, Object value) +3526
[ArgumentException:错误序列化“Microsoft.SharePoint.SPUser.”类型的值“i:0#.w|fsoft.fpt.vn\hoavt2”] System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter writer, Object value) +4068 System.Web.UI.ObjectStateFormatter.Serialize(对象状态图,目的用途)+103 System.Web.UI.Util.SerializeWithAssert(IStateFormatter2 格式化程序,对象状态图,目的用途)+67 System.Web.UI.HiddenFieldPageStatePersister.Save() +173 System.Web.UI.Page.SaveAllState() +1161 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4660
有人遇到这个问题,请帮忙。
【问题讨论】:
标签: c# sharepoint sh