J'ai une vue qui permet à un utilisateur d'entrer/modifier des données pour un nouveau Widget. J'aimerais formuler ces données dans un objet json et les envoyer à mon contrôleur via AJAX afin de pouvoir effectuer la validation sur le serveur sans postback.
Tout fonctionne, sauf que je n'arrive pas à trouver comment transmettre les données pour que la méthode de mon contrôleur puisse accepter un type de widget complexe au lieu de paramètres individuels pour chaque propriété.
Donc, si c'est mon objet :
public class Widget
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
J'aimerais que la méthode de mon contrôleur ressemble à quelque chose comme ceci :
public JsonResult Save(Widget widget)
{
...
}
Actuellement, mon jQuery ressemble à ceci :
var formData = $("#Form1").serializeArray();
$.post("/Widget/Save",
formData,
function(result){}, "json");
Mon formulaire (Form1) comporte un champ de saisie pour chaque propriété du widget (Id, Nom, Prix). Cela fonctionne très bien, mais au final, chaque propriété du widget est transmise comme un paramètre distinct à la méthode de mon contrôleur.
Existe-t-il un moyen d'"intercepter" les données, peut-être en utilisant un attribut ActionFilterAttribute, et de les désérialiser en un objet Widget avant que la méthode de mon contrôleur ne soit appelée ?