Ich habe gekämpft, um eine Lösung für dieses Problem zu finden.Post Array als JSON zu MVC Controller
In meinem Code baue ich ein Array eines Objekts auf;
var $marks = [];
var mark = function (x, y, counter){
this.x = x;
this.y = y;
this.counter = counter;
}
$marks.push(new mark(1, 2, 0));
$marks.push(new mark(1, 2, 1));
$marks.push(new mark(1, 2, 2));
Jetzt möchte ich diese Daten an ein MVC-Controller schreiben, so würde ich denken, dass der Datentyp in der Steuerung ein List<Mark> Marks
oder ein Array von Marks sein würde.
Um die Daten zu veröffentlichen, habe ich versucht;
var json = JSON.stringify($marks);
$.post('url', json).done(function(data){ /* handle */ });
ODER
var json = { Marks: $marks };
$.post('url', json).done(function(data){ /* handle */ });
Der zweite Weg, wenn auf die Daten geschrieben suchen, sieht wie folgt aus
Marks[0][x]: 1
Marks[0][y]: 2
Marks[0][counter]: 0
Marks[0][x]: 1
Marks[0][y]: 2
Marks[0][counter]: 1
Marks[0][x]: 1
Marks[0][y]: 2
Marks[0][counter]: 2
Aber ich bin nicht sicher, wie das typisierte Objekt in einem stark zu übersetzen in der Steuerung?
Mein Controller sieht so aus;
[HttpPost]
public ActionResult JsonSaveMarks(List<Mark> Marks){
// handle here
}
Meine Mark-Klasse sieht so aus;
public class Mark{
public string x { get; set; }
public string y { get; set; }
public string counter { get; set; }
}
Ich habe über das Erstellen eines benutzerdefinierten JsonFilterAttribute oder mit dem System.Web.Script.Serialization.JavaScriptSerializer Klasse durch andere ähnliche Probleme lesen, aber ich kann nichts
Gibt es etwas offensichtlich fehle ich hier zu arbeiten? Habe ich den DataType im Controller komplett falsch? Wie kann ich diese Daten in ein stark typisiertes Objekt umwandeln?
Vielen Dank
Wie sieht Ihre Mark-Klasse in MVC aus? – Pbirkoff
@Pbirkoff Ich habe die Frage mit der Klasse –
aktualisiert diese Frage zu überprüfen, vor allem die erste Antwort: http://stackoverflow.com/questions/4789481/post-an-array-of-objects-via-json-to-asp -net-mvc3 – Pbirkoff