Passer une collection d’objects au contrôleur MVC à l’aide de $ .post

Nous essayons d’envoyer une collection d’objects de notre page à notre contrôleur (MVC 3) à l’aide de json et de la fonction jQuery .post. Vous trouverez ci-dessous notre code js et les définitions de contrôleur et d’object.

Le problème est que, même si l’object est correctement envoyé à notre contrôleur, ses variables membres ne sont pas renseignées. La liste “Coords” contient le nombre approprié d’objects “Coord”, mais les variables de membre de chaque object Coord sont renseignées avec zéro (non nul) au lieu des valeurs que nous transmettons. Voir la capture d’écran:

Des idées sur ce qui ne va pas avec notre mise en œuvre?

Merci d’avance!

entrez la description de l'image ici

Coord1 = { "X": 100, "Y": 200 }; Coord2 = { "X": 300, "Y": 400 }; zoneData = { "Color": "#D8F834", "Name": "new zone", "Coords": [Coord1, Coord2] } $.post("/Demo/SaveZone", zoneData, function (resp) { alert(resp); }, "json"); [HttpPost] public ActionResult SaveZone(ZoneViewModel zvm) { Zone z; z = AutoMapper.Mapper.Map(zvm); _db.Zone.Attach(z); _db.SaveChanges(); return View(); } public class ZoneViewModel { public int Id { get; set; } public ssortingng Name { get; set; } public ssortingng Color { get; set; } public CoordViewModel[] Coords { get; set; } } public class CoordViewModel { public int Id { get; set; } public int X { get; set; } public int Y { get; set; } } 

Le plus simple serait probablement d’utiliser une requête JSON:

 var coord1 = { X: 100, Y: 200 }; var coord2 = { X: 300, Y: 400 }; var zoneData = { Color: '#D8F834', Name: 'new zone', Coords: [ coord1, coord2 ] }; $.ajax({ url: '/Demo/SaveZone', type: 'POST', contentType: 'application/json; charset=utf-8', data: JSON.ssortingngify(zoneData), success: function(resp) { alert(resp); } }); 

La méthode JSON.ssortingngify sérialise un object javascript dans une chaîne JSON. Il est intégré aux navigateurs modernes en tant que méthode native. Si vous souhaitez prendre en charge les navigateurs hérités ne disposant pas de cette méthode, vous devez inclure le script json2.js qui vérifie si le navigateur le prend en charge de manière native et, dans le cas contraire, il fournit une implémentation.

Maintenant tout devrait se lier correctement:

entrez la description de l'image ici

et voici à quoi ressemblera la requête réussie:

entrez la description de l'image ici

Ma conjecture:

 public List Coords { get; set; } 

(J’avoue que c’est un coup dans le noir)