Jquery 从JS向MVC提交对象列表

Jquery 从JS向MVC提交对象列表,jquery,arrays,ajax,asp.net-mvc,Jquery,Arrays,Ajax,Asp.net Mvc,我需要提交一份用户列表。 我有一个MVC控制器 [HttpPost] public JsonResult Handler(List<User> users) { ... } 在JavaScript中,我通过jquery发送数组 var users = {}; for (var i = 0; i < 3; i++) { users [i] = { name: "User " + i, ema

我需要提交一份用户列表。 我有一个MVC控制器

[HttpPost]
public JsonResult Handler(List<User> users) {
   ...
}
在JavaScript中,我通过jquery发送数组

    var users = {};
    for (var i = 0; i < 3; i++) {
        users [i] = {
            name: "User " + i, 
            email: "user" + i + "@test.net"
        }
    }

   $.ajax({
        type: "POST",
        data: {
                users: users
        },
        url: "http://test.net/order/handler",
        success: callback
    });
var-users={};
对于(变量i=0;i<3;i++){
用户[i]={
名称:“用户”+i,
电子邮件:“用户”+i+“@test.net”
}
}
$.ajax({
类型:“POST”,
数据:{
用户:用户
},
url:“http://test.net/order/handler",
成功:回调
});
我得到了包含3项的列表,但参数name和email为空


我哪里错了?

您是否尝试将
[FromBody]
添加到参数中?例如:

[HttpPost]
public JsonResult Handler([FromBody] List<User> users) {
   ...
}

另一件事:你可能正在做一件有几方面含义的事情。您可以考虑使用以查看您的请求发生了什么,并发布更新,以便我们可以进一步帮助您。

不是因为您应该创建<强>数组< /强>,然后将<强>对象< /强>添加到:

    var users = [];
    for (var i = 0; i < 3; i++) {
        var user = {
            name: "User " + i, 
            email: "user" + i + "@test.net"
        }

        users[i] = user;
    }

   $.ajax({
        type: "POST",
        data: {
                users: users
        },
        url: "http://test.net/order/handler",
        success: callback
    });
var用户=[];
对于(变量i=0;i<3;i++){
变量用户={
名称:“用户”+i,
电子邮件:“用户”+i+“@test.net”
}
用户[i]=用户;
}
$.ajax({
类型:“POST”,
数据:{
用户:用户
},
url:“http://test.net/order/handler",
成功:回调
});

首先,您需要设置有效的json数据:

var users = Array(), i;
for (i = 0; i < 3; i++) {
    users[i] =
    {
        name: "User " + i,
        email: "user" + i + "@test.net"
    };
}

您如何尝试访问生成的
users
变量中的数据?您的类名是“User”,但列表中的类型是list(即带有s)。使用json.stringify(users)…@Exception:Eh,不。在使用jQuery的ajax时,您不需要(或者更确切地说,不应该)这样做。to Routeburn:我只是输入错误。已修复。否,它会给出相同的结果:-/他在做一个数组,在他的例子中,他减少了2行,做的完全相同。
    var users = [];
    for (var i = 0; i < 3; i++) {
        var user = {
            name: "User " + i, 
            email: "user" + i + "@test.net"
        }

        users[i] = user;
    }

   $.ajax({
        type: "POST",
        data: {
                users: users
        },
        url: "http://test.net/order/handler",
        success: callback
    });
var users = Array(), i;
for (i = 0; i < 3; i++) {
    users[i] =
    {
        name: "User " + i,
        email: "user" + i + "@test.net"
    };
}
$(document).ready(function() {
    $.ajax({
        type: "POST",
        dataType: 'json',
        data: {
            users: users
        },
        url: "http://test.net/order/handler",
        success: callback
    });
});