使用 AJAX 调用接收到控制器后数组变空

Array becoming empty after receiving into controller with AJAX call

我有一个名为 SOMEOBJECT 的 class 包含名称 Extras 的列表。

我正在尝试通过 AJAX 调用将数据传递到我的控制器中。 在 MVC 控制器接收到的数据中,数组显示了正确的长度,但数组对象中的整个数据都是空的。

有解决办法吗?

我通过 AJAX 调用传递 class SOMEOBJECT 的对象是这样的: 我通过 F12 DEV 工具 FORM DATA

获取了它
chk1Checked:false
chk2Checked:true
chk3Checked:true
Extras[0][id]:COMP1
Extras[0][itemType]:DROPDOWN
Extras[0][itemId]:111
Extras[0][itemValue]:EVAL1
Extras[1][id]:COMP2
Extras[1][itemType]:DROPDOWN
Extras[1][itemId]:112
Extras[1][itemValue]:EVAL2

我能够在我的控制器中看到长度为 2 的 'Extras' 变量,但内部数据为 NULL。

说你有这样的额外 class

public class Extra
{
    public int Id { get; set; }
    public int ItemId { get; set; }
    public string ItemType { get; set; }
    public string ItemValue { get; set; }
}

尝试检索具有匹配 属性 名称的列表..

public ActionResult YourAction(List<Extra> extras, bool chk1Checked, //...

数据对象 post 通过 Ajax 应该看起来像这样

{
    "Extras": [{
        "Id": 1,
        "ItemId": 1,
        "ItemType": "foo",
        "ItemValue": "bar"
    },
    {
        "Id": 2,
        "ItemId": 2,
        "ItemType": "whatever",
        "ItemValue": ""
    }]
}