2009-07-22 3 views
0

Ich möchte ein verschachteltes JavaScript-Objekt an meine ASP.NET MVC-Aktionsmethode übergeben. Hier ist der Code (vereinfacht):Wie Übergeben eines verschachtelten JavaScript-Objekts an ASP.NET MVC Action Method?

$.getJSON('some/url', 
       { 

        index: pageIndex, 
        pageSize: pageSize, 
        filter:{one:'one',two:'two',three:'three'} 
       },someCallBack(msg) 
     ); 

ich jQuery bin mit und implementiert mein Plugin, das paginiert Daten vom Server lazily abruft. Es funktioniert alles Charme, aber jetzt muss ich ein JavaScript "Filter" -Objekt mit variabler Anzahl von Eigenschaften-Filter übergeben. Auf der Serverseite erhalte ich ein Objektarray, wobei das erste Element eine Zeichenfolge ist, die das Literal '[Object object]' enthält.

Offensichtlich wird mein verschachteltes Objekt (Filter) nicht erweitert und auf der Serverseite in ein Objekt (Hash) umgewandelt. Ist das überhaupt möglich? Ich möchte meine Filter nicht hart codieren, da das Plugin unversiert angewendet werden soll.

Vielen Dank.

Antwort

3

Sie können System.Web.Script.Serialization.JavaScriptSerializer zum Senden/Empfangen von JSON serialisierten Daten:

JavaScriptSerializer js = new JavaScriptSerializer(); 
Filter f = js.Deserialize<Filter>(json_str); 

Weitere Details here. Verwenden Sie eine JSON-Serialisierungsbibliothek für JavaScript wie json2.js, um die JSON-Daten zu verschlüsseln, die an den Server gesendet werden sollen. Dann senden Sie die Abfrage wie folgt:

var filter = {field1: 'value1', field2: 'value2'} 

$.ajax({ 
type: "POST", 
url: '/server/path', 
data: { filter: JSON2.stringify(filter) }, 
dataType: "json", 
success: function(data) { 
    // do something 
} 
}); 
1

JSON wäre dafür perfekt. Im Grunde genommen möchten Sie Ihr Objekt in seine JSON-Darstellung konvertieren und dann über die Leitung senden. Sobald es auf dem Server verfügbar ist, können Sie es beliebig verarbeiten.

Crockford hat eine great article auf, was JSON ist, wie man die Notation zu verstehen, und er bietet ein Werkzeug, um Ihre Objekte in JSON-Notation zu konvertieren.

1

Sie können die folgende js lib json2 library verwenden, Sie können dann die stringify-Methode verwenden, um sicherzustellen, dass Ihr json im richtigen Format für den Dienst ist.

var data0 = {one:'one',two:'two',three:'three'} 

var json = JSON2.stringify(data0); 

$.ajax({ 
type: "POST", 
url: someServiceUrl, 
data: json, 
contentType: "application/json; charset=utf-8", 
dataType: "json", 
success: function(msg) { 

} 
}); 
Verwandte Themen