Передать объекты в silverlight через код asp.net на стороне сервера

Можно ли передавать объекты (сериализуемые классы или другие способы) элементу управления Silverlight через код на стороне сервера asp.net?


person Jeremy    schedule 09.12.2008    source источник


Ответы (1)


Ну, это будет связано с сериализацией. Помните: ваш клиент Silverlight отключен от сервера, точно так же, как браузер отключен от сервера.

Существует отличная статья здесь по JSON. сериализация в Silverlight и обратно. Вот краткое изложение статьи:

Давайте начнем с краткого введения в то, что такое JSON. Он расшифровывается как JavaScript Object N и используется как альтернатива 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 );
person Dan Esparza    schedule 09.12.2008
comment
Как мне передать это в управление Silverlight? Мне просто зарегистрировать блок сценария на странице, а затем как-то найти переменную javascript в элементе управления Silverlight? - person Jeremy; 10.12.2008