2008-11-12 8 views

Antwort

3

JSON Umstellung auf .NET-Klassen können mit System.Runtime.Serialization und System.Runtime.Serialization.JSON erfolgen. Ich vermute, dass Sie mehr daran interessiert sind, Funktionsaufrufe von Client zu Server einzurichten. Ich denke, es ist einen Versuch wert this tutorial.

In diesem Lernprogramm müssen Sie eine Web-Service-Datei ".asmx" hinzufügen. In der asmx-Datei können Sie Funktionen erstellen, die vom Client-Skript aus aufgerufen werden können. Ihre ASP.NET-Seiten können auch auf Clientskripts verweisen, die zum Aufruf der ASMX-Funktionen generiert wurden.

Wenn Sie tatsächlich obwohl JSON Serialisierung tun möchten, können Sie auch die folgenden Befehle verwenden:

using System.Runtime.Serialization; 
using System.Runtime.Serialization.Json; 

public class JsonSerializer 
{ 
    // To make a type serializeable, mark it with DataContractAttribute 
    // To make a member of such types serializeable, mark them with DataMemberAttribute 
    // All types marked for serialization then need to be passed to JsonSerialize as 
    // parameter 'types' 

    static public string JsonSerialize(object objectToSerialize, params Type[] types) 
    { 
     DataContractJsonSerializer serializer = new DataContractJsonSerializer(
      types[0], types.Skip(1)); 

     MemoryStream ms = new MemoryStream(); 
     serializer.WriteObject(ms, objectToSerialize); 
     ms.Seek(0, SeekOrigin.Begin); 
     StreamReader sr = new StreamReader(ms); 
     return sr.ReadToEnd(); 
    } 
} 
3

Der folgende Artikel Extending an existing ASP.NET Web Service to support JSON von Bobby Soares auf codproject.com spricht über benutzerdefinierte Methode unter Verwendung von Attributen gewünschte Ergebnis zu erzielen.

+0

Bobby Saores Artikel sieht perfekt aus. Ich werde versuchen, es zu implementieren, da es so aussieht, als würde es mein Projekt unterstützen. – htm11h

0

Ich habe ASP.Net Ajax für eine Weile verwendet, aber ohne jemals über JSON oder XML-Kommunikation besorgt zu sein. Stattdessen habe ich Webdienste verwendet, um direkt Inhalte zurückzugeben, die Sie mit innerHTML festlegen können.

Dies ist sehr einfach zu implementieren. Erstellen Sie einfach eine Web-Service-Datei (ASMX) und deklarieren Sie Ihre Methoden als WebMethods (setzen Sie das WebMethod-Attribut).

Jetzt können Sie Ihren Web-Service von Ihrem Javascript-Code ziemlich wie eine normale Funktion aufrufen.

Die Ergebnisse der Funktion werden an eine Rückruffunktion zurückgegeben. Dies ist die Struktur

//Webmethod returns some HTML content 
Myservice.DoSomething(myParam, callBackFunction); 

//Content is set on the webpage 
function callBackFunction(result){ 
    document.getElementById('myElemID').innerHTML = result; 
} 
+0

Warum nicht einfach Update-Panels verwenden, wenn Sie den Aufwand haben, HTML anstelle eines leichten JSON-Objekts zu übergeben? Die Idee von json ist es, die k's auf dem Minimum zu halten und somit schnelle Antworten zu haben – redsquare

Verwandte Themen