Postar dados JSON por meio de um formulário no MVC4
Eu estou tentando POSTAR um objeto JSON (um modelo knockout JSON-ified, se isso é de alguma relevância) para o meu controlador MVC e ter o controlador retornar uma nova visão. Para fazer isso, estou enviando os dados com um formulário. O problema é que eu gostaria de ter o JSON automaticamente convertido em um modelo quando o controlador o recebe.
Se eu fosse usar uma chamada AJAX para isso,
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) {
}
});
... o objeto JSON é desserializado com êxito e convertido em uma instância da minha classe de modelo.
public ActionResult Preview(ActionModel actionModel) { ... }
public class ActionModel
{
public List<ControlModel> Controls { get; set; }
}
Se eu quiser fazer isso com um formulário, entendo que preciso inserir o JSON em um campo de entrada oculto, mas o melhor que posso gerenciar ao fazer isso é receber os dados como uma string serializada:
@using (Html.BeginForm("Preview", "MyController", FormMethod.Post, new { id = "previewForm" }))
{
<input type="hidden" id="hiddenFieldName" />
}
public ActionResult Preview(string hiddenFieldName) { ... }
Eu poderia apenas desserializá-lo depois, mas eu realmente preferiria se MVC pudesse convertê-lo para mim, como faria com uma chamada AJAX. Isso é possível?
Obrigado.