【问题标题】:Web API POST using [FromBody] giving nullWeb API POST 使用 [FromBody] 给出 null
【发布时间】:2016-08-19 11:00:39
【问题描述】:

这是我的 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()
            }
        });
    },

我让对象显示在谷歌开发者工具中,但“数据”设置为空。我尝试将对象作为字符串发送,结果相同。

【问题讨论】:

  • 先尝试将object转json,删除dataType,将contentType设置为application/json

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


【解决方案1】:

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

更新您的操作以接受类型化参数

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()
        }
    });
},

【讨论】:

    猜你喜欢
    • 2015-08-07
    • 1970-01-01
    • 2017-04-12
    • 2016-04-10
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多