2016-03-11 68 views
2

所以我傳遞對象的數組像爲什麼我不在控制器中捕獲這個JSON?

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

和我的控制器是

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

其中AnswerSubmission

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

它不工作,我得到空的定義來自

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

,如果我讓我的控制器

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

進行測試。

+2

添加'的contentType:「應用程序/ JSON;字符集= utf-8「,」選項給你ajax。 –

+0

替換Ajax調用中的數據參數:data:{'':Answers} – Balde

+0

這不是一個_「對象數組」_,而是發送一個對象。 – EdSF

回答

1

{ QuestionId:24,
AnswerVal:-1,
PARTNERID: 「e0e8035d-046A-45c5-b7e5-7986865ce37c」
VERSIONID:1 }

是不一個「對象數組」,它是一個對象。

所以除了contentType: "application/json; charset=utf-8"通過@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.. 
}); 

控制器:

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