将对象从jquery ajax传递到WebAPI结果为null

时间:2014-10-24 08:12:41

标签: c# ajax asp.net-web-api

在HTML上:

<div>
    <button onclick="clicker()">Click Me!</button>
</div>

<script type="text/javascript">
    function clicker() {
        var data = {
          id: 1,
          name: 'julius'
        };

        $.ajax({
            type: 'POST',
            url: '/api/test/',
            data: JSON.stringify(data),
            contentType: "application/json; charset=utf-8"
        });
    }
</script>

在控制器上:

public class TestController : ApiController
{
    public void Post([FromBody]string value)
    {
      Console.WriteLine();
    }
}

控制器上变量“value”的值为null,但是,我将数据传递给ajax调用。有人可以解释为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

不是尝试以字符串形式接收发布的内容,而是创建一个封装您要发布的属性的对象:

public class Data
{
    public int id { get; set; }
    public string name { get; set; }
}

然后将您的控制器更改为:

public class TestController : ApiController
{
    public void Post(Data value)
    {
      int id = value.id;
      string name = value.name;
    }
}

如果你真的想以字符串形式收到发布的数据,那么Darrel Miller撰写的这篇博文可能有所帮助:

Posting raw JSON to Web API