Publikuj dane JSON za pomocą formularza w MVC4

Próbuję POST obiektu JSON (model knockout JSON, jeśli ma to jakiekolwiek znaczenie) do mojego kontrolera MVC, i kontroler zwrócić nowy widok. Aby to zrobić, przesyłam dane z formularzem. Problem polega na tym, że chciałbym, aby JSON był automatycznie konwertowany na model, gdy kontroler go odbierze.

Gdybym użył do tego wywołania AJAX,

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) {
    }
});

... obiekt JSON został pomyślnie rozszeregowany i przekształcony w instancję mojej klasy modelu.

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

Jeśli chcę to zrobić za pomocą formularza, rozumiem, że muszę wstawić JSON do ukrytego pola wejściowego, ale najlepsze, co mogę zrobić, to zrobić, aby otrzymać dane jako ciąg serializowany:

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

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

Mogłem po prostu deserializować go później, ale naprawdę wolałbym, gdyby MVC mógł go przekonwertować dla mnie, tak jak w przypadku wywołania AJAX. czy to możliwe?

Dzięki.

questionAnswers(2)

yourAnswerToTheQuestion