Web API POST使用[FromBody]给出null

Web API POST using [FromBody] giving null

本文关键字:给出 null FromBody API POST 使用 Web      更新时间:2023-09-26

这是我的WebAPI (c#):

 [Route("")]
        [HttpPost]
        public void SaveTestRun([FromBody] object data)
        {
            inputResultsToDatabase(data);
        }
这是我的ajax请求:
sendTestData() {
        this.get('ajax').request('/web/api/test/', {
            data: {"name":"John Doe", "age":18, "country":"United States of America"},
            method: 'POST',
            dataType: 'object',
            headers: {
                AjaxRequestUniqueKey: getAntiForgeryToken()
            }
        });
    },

我得到的对象显示在谷歌开发人员工具,但"数据"设置为空。我已经尝试发送对象作为一个字符串,与相同的结果。

[FromBody]用于从请求体中提取简单类型。

更新Action以接受一个类型参数

public class MyObject {
    public string name { get; set; }
    public int age { get; set; }
    public string country { get; set; }
}
[Route("")]
[HttpPost]
public void SaveTestRun(MyObject data) {
    inputResultsToDatabase(data);
}

接下来,请确保您以正确的格式发布数据

sendTestData() {
    var data = {"name":"John Doe", "age":18, "country":"United States of America"};
    this.get('ajax').request('/web/api/test/', {
        data: JSON.stringify(data),
        method: 'POST',
        contentType: 'application/json',
        headers: {
            AjaxRequestUniqueKey: getAntiForgeryToken()
        }
    });
},