Posten Sie JSON-Daten über ein Formular in MVC4

Ich versuche, ein JSON-Objekt (ein JSON-konformes Knockout-Modell, falls dies relevant ist) für meinen MVC-Controller bereitzustellen und den Controller eine neue Ansicht zurückgeben zu lassen. Dazu sende ich die Daten mit einem Formular. Das Problem ist, dass ich das JSON automatisch in ein Modell konvertieren lassen möchte, wenn der Controller es empfängt.

Wenn ich dafür einen AJAX-Aufruf verwenden würde,

var actionModel = new Object();
actionModel.Controls = ko.toJS(self.controls());
var json = JSON.stringify(actionModel);
$.ajax({
    url: "MyController/Preview",
    type: "POST",
    contentType: 'application/json; charset=utf-8',
    cache: false,
    data: json,
    success: function (data) {
    }
});

... das JSON-Objekt erfolgreich deserialisiert und in eine Instanz meiner Modellklasse konvertiert wurde.

public ActionResult Preview(ActionModel actionModel) { ... }
public class ActionModel
{
    public List<ControlModel> Controls { get; set; }
}

Wenn ich dies mit einem Formular tun möchte, muss ich den JSON-Code in ein verstecktes Eingabefeld einfügen. Das Beste, was ich dabei tun kann, ist, die Daten als serialisierten String zu empfangen:

@using (Html.BeginForm("Preview", "MyController", FormMethod.Post, new { id = "previewForm" }))
{
    <input type="hidden" id="hiddenFieldName" />
}

public ActionResult Preview(string hiddenFieldName) { ... }

Ich könnte es später einfach deserialisieren, aber ich würde es wirklich vorziehen, wenn MVC es für mich konvertieren könnte, wie es bei einem AJAX-Aufruf der Fall wäre. Ist das möglich?

Vielen Dank.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage