Próbuję POST obiekt JSON (model nokaut JSON-ified, jeśli to ma jakąkolwiek istotność) do mojego kontrolera MVC, i kontroler zwróci nowy widok. Aby to zrobić, wysyłam dane za pomocą formularza. Problem polega na tym, że chciałbym, aby JSON automatycznie przekształcał się w model, gdy kontroler go odbierze.Wysyłaj dane JSON przez formularz w MVC4
Gdybym miał użyć wywołanie AJAX dla tego,
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 powodzeniem rozszeregować i przekształcony instancji mojej klasie modelu.
public ActionResult Preview(ActionModel actionModel) { ... }
public class ActionModel
{
public List<ControlModel> Controls { get; set; }
}
Jeśli chcę zrobić to z formą, rozumiem, że muszę włożyć JSON w polu wejściowym ukrytym, ale najlepiej można zarządzać, gdy robi to, aby odbierać dane jako odcinkach łańcucha :
@using (Html.BeginForm("Preview", "MyController", FormMethod.Post, new { id = "previewForm" }))
{
<input type="hidden" id="hiddenFieldName" />
}
public ActionResult Preview(string hiddenFieldName) { ... }
może po prostu deserializować go potem, ale ja naprawdę woleliby, gdyby MVC mogłyby przekształcić go dla mnie, jak to będzie z wywołania AJAX. czy to możliwe?
Dzięki.
Dzięki za wejście. Chyba po prostu wyślę to jako ciąg. To nie koniec świata, ponieważ mogę przywrócić ten sam JSON z powrotem na nowej stronie, ale miałem nadzieję, że uda mi się uczynić działanie Preview zgodne z resztą kontrolera. – Alejo