0

我的 c# 代码中有这个类:

public class MyItem
    {
        public int LocationId { get; set; }
        public int Value { get; set; }
        public int ddlId { get; set; }
    }

这是我的 Js/Ajax 代码:

var array = new Array();
grid.forEachRow(function (id) {
        var object = {
            LocationId: id,
            Value: someValue,
            ddlId: otherValue
        };
        array.push(object);
    });

$.ajax({
    type: "POST",
    url: "/MyController/SaveTheList",
    data: { myList: array },
    success:function() { }
 });

这是控制器中的方法:

 [HttpPost]
 public ActionResult SaveTheList(List<MyItem> myList)
 { }

该方法被命中,并且 myList 具有确切的长度,但对象中的所有值都是 0。

4

3 回答 3

1

我建议您使用提琴手(或类似工具)检查在 POST 正文中的 AJAX 请求中究竟发送了哪些数据,

有件事告诉我

数据:{我的列表:数组}

看起来像“Object#1,Object#2,Object#3”,因为 jQuery 将如何尝试序列化您的对象数组

作为一种解决方案,尝试将youj jQuery请求上的数据作为JSON字符串传递,而不是MVC binder应该能够绑定数据;

于 2012-10-29T14:45:12.960 回答
1

在这之前:

$.ajax({
    type: "POST",
    url: "/MyController/SaveTheList",
    data: { myList: array },
    success:function() { }
 }); 

用这个:

$.ajaxSetup({ traditional:true });

我有同样的问题,它对我有用。

于 2014-07-28T22:55:12.390 回答
0

您可以将其作为JSON请求发送,也可以发送stringify您的数据:

$.ajax({
    type: "POST",
    url: "/MyController/SaveTheList",
    contentType: 'application/json',
    data: JSON.stringify({ myList: array }),
    success: function (result) {

    }
});
于 2012-10-29T14:38:58.430 回答