向web api方法发布对象列表

时间:2015-05-15 16:28:15

标签: jquery post asp.net-web-api

您好我正试图以这种方式向web api方法发布一个objectos列表:

var uri = "http://localhost:" + port + "/api/Account";
$.ajax({
    dateType: "json",       
    method: "POST",
    url: uri,
    data: JSON.stringify(schedule),
    success: function (result) {
        alert(result);
    },
    error: function () {
        alert("mal")
    }
})

我的网络API方法如下:

public IHttpActionResult createSchedule([FromBody]List<Schedule> schedule)
{
        return Ok(schedule.Capacity);
}

问题是返回0而不是列表中的对象数。我认为这是因为列表是空的。我做得怎么样?我将有关设置数据的内容读到date: {"": schedule},但它没有用。它抛出了一个空引用异常。

3 个答案:

答案 0 :(得分:2)

您正确传递数据,但您需要指明请求的内容类型是JSON(dataType中的$.ajax选项告诉jQuery 期待什么响应)。将contentType参数添加到ajax调用,它应该可以工作:

var uri = "http://localhost:" + port + "/api/Account";
var schedule = [{}, {}, {}];
$.ajax({
    dateType: "json",
    contentType: "application/json",
    method: "POST",
    url: uri,
    data: JSON.stringify(schedule),
    success: function (result) {
        alert(result);
    },
    error: function () {
        alert("mal")
    }
})

答案 1 :(得分:0)

webapi方法将查找schedule对象

所以请将data: schedule,更改为data: { schedule: schedule },

答案 2 :(得分:0)

我认为错误是web api方法,因为我正在使用postman(chrome)进行测试,并且当我尝试发送这个json时我得到null引用异常:

var schedule = [{day: "Lunes", hour: "9-11", id_flat: 1},{day: "Martes", hour: "15-16", id_flat: 1}]