Passar objetos para o Silverlight através de código asp.net do lado do servidor

votos
2

É possível passar objetos (classes serializáveis ​​ou outras formas) para um controle Silverlight através de código do lado do servidor asp.net?

Publicado 09/12/2008 em 23:18
fonte usuário
Em outras línguas...                            


1 respostas

votos
3

Bem, isso vai envolver serialização. Lembre-se - o seu cliente Silverlight é desconectado do servidor, assim como o navegador está desconectado do servidor.

Há um ótimo artigo aqui em JSON serialização de e para o Silverlight. Aqui está o resumo do artigo:

Vamos começar com uma breve introdução do que JSON é. Fica para J ava S cript O bject N otation e é utilizado como uma alternativa do XML. Aqui está um exemplo simples para um arquivo JSON:

{"FirstName":"Martin","LastName":"Mihaylov"} para um único objecto

E

[{"FirstName":"Martin","LastName":"Mihaylov"},{"FirstName":"Emil","LastName":"Stoychev"}] para vários objetos.

Parece um array. Dependendo do objeto que é serializado poderia olhar realmente complicado.

serialização

Para ser serializado com DataContractJsonSerializer temos que definir um atributo [DataContract]. Os properites que serão utilizados pela serialização deve ter [DataMember] atributos. Nota: Para usar esses atributos adicionar uma referência para System.Runtime.Serialization;

[DataContract]
public class Person
{

    [DataMember]
    public string FirstName
    {
        get;
        set;
    }

    [DataMember]
    public string LastName
    {
        get;
        set;
    }

}

Agora estamos prontos para começar a serialização. Vamos criar um método que leva o nosso objeto como um argumento e retorna uma string no formato 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();
        }

    }

}

deserializing

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);

    }

}

Aqui está o que isso parece de código de cliente:

List<Person> persons = Deserialize<List<Person>>( jsonString );
Respondeu 09/12/2008 em 23:25
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more