c# - 通过服务器端 asp.net 代码将对象传递给 silverlight

标签 c# asp.net silverlight

是否可以通过 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/

相关文章:

wpf - 是否可以在 WPF 和 Silverlight 中开发一个应用程序?

.net - 如何将TCPClient和NetworkStream移植到Silverlight?

c# - 如何使用 Swashbuckle 从 WebAPI 上的 Swagger 文档中省略方法

c# - Paypal Adaptive - 支付 API

c# - Azure.RequestFailedException : 'Service request failed. 状态 : 404 (The specified blob does not exist. )错误代码:BlobNotFound

c# - 如何从XNode读取数据

asp.net - Windows 7 上的等效 "aspnet_regiis -lk"是什么?

c# - 尝试在 EF7 beta6 中使用 'MissingMethodException' 时获取 'dnx . ef migration add'

c# - Silverlight XAML 文件中文本的 TextBlock 换行

c# - 是否可以在表单中将 HTML 按钮设置为默认按钮?