/ / Pourquoi est-ce que je ne capture pas ce JSON dans mon contrôleur? - json, ajax, asp.net-mvc, post

Pourquoi est-ce que je ne capture pas ce JSON dans mon contrôleur? - json, ajax, asp.net-mvc, post

Donc, je "passe un tableau d'objets comme

{ QuestionId: 24,
AnswerVal: -1,
PartnerId: "e0e8035d-046a-45c5-b7e5-7986865ce37c",
VersionId: 1 }

et mon contrôleur est

[HttpPost]
public async Task<ActionResult> SubmitAnswers ( List<AnswerSubmission> A )

AnswerSubmission est défini par

public class AnswerSubmission
{
public Guid PartnerId { get; set; }
public int AnswerVal { get; set; }
public int QuestionId { get; set; }
public int VersionId { get; set; }
}

Cela ne fonctionne pas car je reçois une réponse vide

$.ajax({
method: "POST",
url: "/Answers/SubmitAnswers",
dataType: "json",
data: JSON.stringify(Answers),
complete: function ( retobj ) {
console.log(retobj);
}
});

si je fabrique mon contrôleur

[HttpPost]
public async Task<ActionResult> SubmitAnswers ( List<AnswerSubmission> A )
{
return Json(A);
}

comme test.

Réponses:

1 pour la réponse № 1

{ QuestionId: 24,
AnswerVal: -1,
PartnerId: "e0e8035d-046a-45c5-b7e5-7986865ce37c",
VersionId: 1 }

N'est pas un "tableau d'objets", c’est un objet.

Alors en outre à contentType: "application/json; charset=utf-8" tel que commenté par @Stephen Muecke

Jquery:

$.ajax({
method: "POST",
url: "/Answers/SubmitAnswers",
dataType: "json",
//add this
contentType: "application/json; charset=utf-8",
data: JSON.stringify(Answers),
complete: function (retobj) {
console.log(retobj);
}
}).done(function (d) {
console.log(d); //probably what you"re really looking for..
});

Manette:

[HttpPost]
public ActionResult SubmitAnswers(AnswerSubmission A)//an object, not an array of objects
{
return Json(A);
}