【问题标题】:Why am I not capturing this JSON in my controller?为什么我没有在我的控制器中捕获这个 JSON?
【发布时间】:2016-03-11 22:03:54
【问题描述】:

所以我传递了一个对象数组,例如

{ 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);
}

作为测试。

【问题讨论】:

  • contentType: "application/json; charset=utf-8", 选项添加到您的ajax。
  • 替换Ajax调用的data参数:data: { '': Answers }
  • 这不是一个“对象数组”,你发送的是一个对象。

标签: json ajax asp.net-mvc post


【解决方案1】:

{ 问题 ID:24,
答案值:-1,
合作伙伴 ID:“e0e8035d-046a-45c5-b7e5-7986865ce37c”,
版本号: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);
}

【讨论】:

    猜你喜欢
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    相关资源
    最近更新 更多