是否可以通过 asp.net 服务器端代码将对象(可序列化类或其他方式)传递到 Silverlight 控件?
最佳答案
嗯,这将涉及序列化。请记住 - 您的 Silverlight 客户端已与服务器断开连接,就像浏览器与服务器断开连接一样。
有一篇很棒的文章here关于与 Silverlight 之间的 JSON 序列化。以下是文章的摘要:
让我们先简单介绍一下什么是 JSON。它代表 JavaScript Oobject Notation,并用作 XML 的替代品。以下是 JSON 文件的简单示例:
{"FirstName":"Martin","LastName":"Mihaylov"}
对于单个对象
还有
[{"FirstName":"Martin","LastName":"Mihaylov"},{"FirstName":"Emil","LastName":"Stoychev"}]
对于多个对象.
它看起来像一个数组。根据序列化的对象,它可能看起来非常复杂。
序列化
为了使用 DataContractJsonSerializer 进行序列化,我们必须设置一个 [DataContract] 属性。序列化将使用的属性必须具有 [DataMember] 属性。注意:要使用这些属性,请添加对 System.Runtime.Serialization 的引用;
[DataContract]
public class Person
{
[DataMember]
public string FirstName
{
get;
set;
}
[DataMember]
public string LastName
{
get;
set;
}
}
现在我们准备开始序列化。让我们创建一个方法,将对象作为参数并返回 JSON 格式的字符串:
public static string SerializeToJsonString(object objectToSerialize)
{
using (MemoryStream ms = new MemoryStream())
{
DataContractJsonSerializer serializer =
new DataContractJsonSerializer(objectToSerialize.GetType());
serializer.WriteObject(ms, objectToSerialize);
ms.Position = 0;
using (StreamReader reader = new StreamReader(ms))
{
return reader.ReadToEnd();
}
}
}
反序列化
public static T Deserialize<T>(string jsonString)
{
using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(jsonString)))
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
return (T)serializer.ReadObject(ms);
}
}
这是客户端代码的样子:
List<Person> persons = Deserialize<List<Person>>( jsonString );
关于c# - 通过服务器端 asp.net 代码将对象传递给 silverlight,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/354453/