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

本文关键字:结果 null WebAPI 对象 jquery ajax | 更新日期: 2023-09-27 18:27:37

在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调用。有人能解释一下为什么会发生这种事吗?

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

不要试图将发布的内容作为字符串接收,而是创建一个封装您正在发布的属性的对象:

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的这篇博客文章可能会有所帮助:

将原始JSON发布到Web API。