如何使用POST将JSON字符串发送到ASP Web API方法?

时间:2013-09-17 09:43:27

标签: asp.net-mvc json

我正在向MVC方法发送JSON消息。当我调试它时调用方法但是 好像数据不存在。换句话说,answerDetail为null。

有人可以就我可能做错的事给我一些建议。这就是我所拥有的:

以下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}]

这是我的AnswerDetail2课程:

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

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

2 个答案:

答案 0 :(得分:2)

你传递一个json字符串,但你所采取的参数是一个类。这不行。

试试这个。

[HttpPost]
[ActionName("CheckAnswers")]
public void CheckAnswers(string answerDetail)
{
    var a = answerDetail;
    //deserialize ur json string..
}

并且你'POST'了数据。你做一个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
  }
});

答案 1 :(得分:0)

您可以使用PUT method而不是表格

通过ajax发送您的请求