使用jQuery和.net web api我没有将单个对象传递给控制器的问题。我正在努力的是将多个对象传递给控制器。我已经看过一些类似的样本,但他们只讨论单个对象传递,我没有问题。这是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();
}
后面的代码中的Dataval定义如下
public class DataVal
{
public int AgencyId { get; set; }
public int Year { get; set; }
public int Value { get; set; }
public int Area { get; set; }
}
如果我将它从列表更改为单个对象但不是多个,则可以正常工作。执行JSON.stringify没有任何区别,也没有在控制器上设置请求方法的类型。我还确保它与Content-Type:application / json的标题一起使用。我可以在chromes开发人员工具中看到Form Data帖子中的数据,因此数据正在通过,其形式为:
{"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}]}:
任何人都知道如何将多个对象传递给控制器或看到我做错了什么?
答案 0 :(得分:0)
找到答案。当您想要将多个对象作为数组发送时,似乎需要将匿名类型发送到Web api。在http://kwilson.me.uk/blog/post-an-array-of-objects-to-webapi-using-jquery/找到了答案。
所以,jQuery看起来像这样:
$.post(sApi.data.Update, { '': data },
function (results) {
if (results > 0) { }
});
执行此更改会导致我的所有对象都被传递并可用。希望这有助于某人。