Asp.net mvc 如何通过POST向ASP Web API方法发送JSON字符串?

Asp.net mvc 如何通过POST向ASP Web API方法发送JSON字符串?,asp.net-mvc,json,Asp.net Mvc,Json,我正在向MVC方法发送一条JSON消息。当我调试时,它调用该方法,但是 似乎数据不在那里。换句话说,answerDetail为空 有人能给我一些建议,说明我可能做错了什么。以下是我所拥有的: 以下MVC控制器方法: [HttpPost] [ActionName("CheckAnswers")] public void CheckAnswers(AnswerDetail2 answerDetail) { var a = answerDetail; } 此消息将发送到以下方法: POST

我正在向MVC方法发送一条JSON消息。当我调试时,它调用该方法,但是 似乎数据不在那里。换句话说,answerDetail为空

有人能给我一些建议,说明我可能做错了什么。以下是我所拥有的:

以下MVC控制器方法:

[HttpPost]
[ActionName("CheckAnswers")]
public void CheckAnswers(AnswerDetail2 answerDetail)
{
    var a = answerDetail;

}
此消息将发送到以下方法:

POST http://127.0.0.1:81/api/Question/CheckAnswers HTTP/1.1
Host: 127.0.0.1:81
Connection: keep-alive
Content-Length: 722
Accept: application/json, text/plain, */*
Origin: http://127.0.0.1:81
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36
Content-Type: application/json;charset=UTF-8
Referer: http://127.0.0.1:81/questions/5
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie: __RequestVerificationToken=4puG_e0..B181

[{"answerId":5,"text":"<p>x</p>","correct":null,"response":false},
 {"answerId":6,"text":"<p>xx</p>","correct":null,"response":false},
 {"answerId":7,"text":"<p>xxx</p>","correct":null,"response":false}]
POSThttp://127.0.0.1:81/api/Question/CheckAnswers HTTP/1.1
主持人:127.0.0.1:81
连接:保持活力
内容长度:722
接受:application/json、text/plain、*/*
来源:http://127.0.0.1:81
用户代理:Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/29.0.1547.66 Safari/537.36
内容类型:application/json;字符集=UTF-8
推荐人:http://127.0.0.1:81/questions/5
接受编码:gzip、deflate、sdch
接受语言:en-US,en;q=0.8
Cookie:uu RequestVerificationToken=4puG_e0..B181
[{“answerId”:5,“text”:“x

”,“correct”:null,“response”:false}, {“answerId”:6,“text”:“xx

”,“correct”:null,“response”:false}, {“answerId”:7,“text”:“xxx

”,“correct”:null,“response”:false}]
下面是我的答案详情2课:

public class AnswerDetail2
{
    public int answerId { get; set; }
    public string text { get; set; }
    public Nullable<bool> correct { get; set; }
    public Nullable<bool> response { get; set; }
}
public class AnswerDetail2
{
public int answerId{get;set;}
公共字符串文本{get;set;}
公共可为空的正确{get;set;}
公共可空响应{get;set;}
}

更新:请注意,我更改了标题。它实际上是一个WebAPI方法,所以我认为发布一个对象是可以的。问题是它没有被接受。

您可以通过ajax通过
PUT方法发送请求,而不是通过传递json字符串的形式发送请求,但是所使用的参数是一个类。这行不通

试试这个

[HttpPost]
[ActionName("CheckAnswers")]
public void CheckAnswers(string answerDetail)
{
    var a = answerDetail;
    //deserialize ur json string..
}
并“发布”数据。你在做一个ajax POST方法吗

试试这个

var myObject =
{
    answerId: 123,
    text: "my Text",
    correct: true,
    response: false,   
};

var answerDetail = JSON.stringify(myObject);

$.ajax({
type: "POST",
url: <Controller>/CheckAnswers,
data: answerDetail,
success: function(data){
  //what ever
  }
});
var myObject=
{
答复:123,
文本:“我的文本”,
对,,
回答:错,
};
var answerDetail=JSON.stringify(myObject);
$.ajax({
类型:“POST”,
url:/CheckAnswers,
资料:回答详情,
成功:功能(数据){
//究竟
}
});

你的意思是说
POST
而不是
PUT
?此外,您的POST数据是一个由
AnswerDetail2
组成的数组,而不是一个实例。