Jquery 将对象传递给web api控制器

Jquery 将对象传递给web api控制器,jquery,.net,asp.net-web-api,Jquery,.net,Asp.net Web Api,使用jQuery和.NETWebAPI,我不会将单个对象传递给控制器。我正在努力解决的是将多个对象传递给控制器。我已经看到了一些类似的示例,但它们只讨论了单个对象的传递,我对此没有异议。以下是jQuery代码: var data = settings.itemArray; if (data.length == 0) return; $.post(sApi.data.Update, JSON.stringify({'data':data}), function (results) { i

使用jQuery和.NETWebAPI,我不会将单个对象传递给控制器。我正在努力解决的是将多个对象传递给控制器。我已经看到了一些类似的示例,但它们只讨论了单个对象的传递,我对此没有异议。以下是jQuery代码:

var data = settings.itemArray;
if (data.length == 0) return;

$.post(sApi.data.Update, JSON.stringify({'data':data}),
function (results) {
    if (results > 0) { }
});
settings.itemArray由4个对象组成的数组组成

我的控制器是这样的:

public void Post([FromBody]List<M.DataVal> data)
    {
        var d = data.Count();
    }
$.post(sApi.data.Update, { '': data },
function (results) {
if (results > 0) { }
});
如果我将它从一个列表更改为一个对象,而不是多个对象,那么它就可以正常工作。执行JSON.stringify没有任何区别,在控制器上设置请求方法的类型也没有任何区别。我还确保它与内容类型的标题保持一致:application/json。我可以在chromes developer tools中的Form data post中看到数据,因此数据以以下形式传递:

{"data":[{"AgencyId":80,"Year":2011,"Value":6546,"Area":1},{"AgencyId":80,"Year":2011,"Value":654654,"Area":2},{"AgencyId":80,"Year":2011,"Value":6456,"Area":3}]}:

有人知道将多个对象传递给控制器的方法,或者知道我做得不正确吗?

找到了答案。当您想要以数组形式发送多个对象时,似乎需要向web api发送匿名类型。在上找到了答案

因此,jQuery将如下所示:

public void Post([FromBody]List<M.DataVal> data)
    {
        var d = data.Count();
    }
$.post(sApi.data.Update, { '': data },
function (results) {
if (results > 0) { }
});

执行此更改将导致所有my对象都被传递并可用。希望这对某人有所帮助。

为了保持一致,您能将答案放在下面的“您的答案”部分吗?