Übergeben Sie Objekte durch Server-Seite asp.net Code, um Silverlight

stimmen
2

Ist es möglich, Objekte (serializable Klassen oder andere Weise) zu einer Silverlight-Steuerung durch asp.net Server-Side-Code zu übergeben?

Veröffentlicht am 09/12/2008 um 23:18
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
3

Nun, es geht um die Serialisierung zu verwickeln. Denken Sie daran - Ihr Silverlight-Client vom Server getrennt, genau wie der Browser vom Server getrennt wird.

Es ist ein großer Artikel hier auf JSON Serialisierung und von Silverlight. Hier ist die Zusammenfassung aus dem Artikel:

Beginnen wir mit einer kurzen Einführung beginnen , was JSON ist. Es steht für J ava S cript O bject N otation und wird als Alternative des XML verwendet. Hier ist ein einfaches Beispiel für eine JSON - Datei:

{"FirstName":"Martin","LastName":"Mihaylov"} für ein einzelnes Objekt

Und

[{"FirstName":"Martin","LastName":"Mihaylov"},{"FirstName":"Emil","LastName":"Stoychev"}] für mehrere Objekte.

Es sieht aus wie ein Array. Je nach Objekt, das serialisiert wird es wirklich kompliziert aussehen könnte.

Serialisieren

Um mit DataContractJsonSerializer serializable zu sein haben wir ein [Datacontract] Attribut zu setzen. Das properites, die von der Serialisierung verwendet werden muß [Datamember] Attribute. Hinweis: Zur Nutzung dieser Attribute einen Verweis auf System.Runtime.Serialization hinzufügen;

[DataContract]
public class Person
{

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

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

}

Jetzt sind wir bereit, mit der Serialisierung zu beginnen. Lassen Sie sich ein Verfahren schaffen, die unser Objekt als Argument und gibt eine Zeichenfolge im JSON-Format:

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

    }

}

Deserialisieren

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

    }

}

Hier ist, was diese wie von Client-Code aussieht:

List<Person> persons = Deserialize<List<Person>>( jsonString );
Beantwortet am 09/12/2008 um 23:25
quelle vom benutzer

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