Ich mag JSON senden können, als den Standardquerystrings im Gegensatz, wenn ein Beitrag zu meinem Controller in ASP.Net MVC zu machen. Ich habe die Front-End-Sachen in Ordnung (bauen und dann meine JSON-Objekte einreichen).ASP.Net MVC: Senden von JSON-Controller
Das Problem ist auf der Steuerungsseite, wo der Standard-Modelbinder, die mit dem MVC-Framework versenden dies nicht unterstützen.
Ich habe eine Kombination von Möglichkeiten gesehen, eine davon ist das Anwenden eines Filters, der das Objekt als Parameter verwendet, eine JSON-Bibliothek zum Deserialisieren verwendet und diese zu den Aktionsparametern hinzufügt. Das ist nicht ideal.
Die andere, besser, Art und Weise ist ein eigenes Modell Binder zu verwenden. Alle, die ich gesehen habe, gehen jedoch davon aus, dass Sie nur ein Modell haben werden, und das wird eher eine Klasse als eine Variable sein. Wenn Sie mehrere haben, bricht es zusammen.
Hat jemand anderes dies gefunden? Eine Idee, die ich hatte, war, wenn ich einfach überschreiben könnte, wie MVC mit der FormCollection handelt und dort abfängt, die Werte der Sammlung selbst hinzufüge und hoffe, MVC kann den Rest auf seine normale Art erledigen. Weiß jemand, ob das möglich ist?
Die zentrale Frage, denke ich, ist, dass mein Problem ist nicht verbindlich, weil meine Ansicht Modelle sind nicht anders, wie sie vor, wo. Das Problem besteht darin, die Werte von JSON Post zu erhalten.
Wenn ich richtig bin MVC bekommen ist die Werte aus der Abfrage-Zeichenfolge und legt sie in die Form Sammlung, die dann für ModelBinding verwendet wird. Sollte also nicht die richtige Methode sein, um die Art der Zuweisung der FormCollection zu ändern?
Beispiel einer Aktion:
public ActionResult MyFirstAction(Int32 ID, PersonObject Person, ClassObject ClassDetails)
{
//etc
}
Die normale Bindung funktioniert, ist JSON nicht und alle das Beispiel von Modell Binder wird nicht funktionieren. Meine beste Lösung ist bisher, das Objekt in ein Dictionary zu konvertieren und jeden Param umzuschleifen. Scheint nicht ideal.
Wenn Sie gehen, um diesen nach unten stimmen, warum erklären könnte? – Damien
Entschuldigung, leider, als ich ging, um den Lieblingsstar zu klicken, klickte ich versehentlich auf die Down-Abstimmung, auch nachdem ich sie bereits upvoted hatte (deshalb ging es von 5 auf 3). Und jetzt sagte es sofort nach dem Versuch, das rückgängig zu machen, was ich versehentlich getan hatte, dass es zu spät war, meine Stimme zu ändern, es sei denn, die Frage wurde bearbeitet. Wenn Sie die Frage bearbeiten, werde ich gerne meine Stimme korrigieren. – jamesaharvey
Kein Problem! Das passiert mir auch oft. – Damien