我一直在为此头疼。我很感激任何帮助。
我有一个自定义 PersonalizationProvider、自定义 WebPartManager 和自定义 WePart 类。我有用于存储每个用户的个性化数据的自定义数据表。我的任务是以编程方式循环遍历每个用户添加的所有 Web 部件,以便我可以设置个性化属性。
根据文档,FindState 方法返回给定 PersonalizationStateQuery 的 PersonalizationStateInfoCollection:
PersonalizationStateQuery pq = new PersonalizationStateQuery();
pq.PathToMatch = path;
pq.UsernameToMatch = userName;
int count;
CustomPersonalizationProvider provider= new CustomPersonalizationProvider();
PersonalizationStateInfoCollection pcol = provider.FindState(PersonalizationScope.User, pq, 0, Int32.MaxValue, out count);
PersonalizationProvider 是一个抽象类,我必须在我的自定义类中为 FindState 方法提供我自己的实现。我花了 6 个小时试图找到一些东西,但我不知道如何实现这个方法。
PersonalizationData 是 blob。我可以将它反序列化为对象数组。但没有进一步的。我不知道如何将该 blob 序列化/反序列化到 PersonalizationStateInfoCollection。
String BlobString = Convert.ToBase64String(UserDataBlob);
ObjectStateFormatter formatter = new ObjectStateFormatter();
Object[] DeserializedObjects = (Object[])formatter.Deserialize(BlobString);
有谁知道 WebPartManager 如何将 UserPersonalizationData 序列化为存储在数据库中的字节数组?