如何将 JSON 数据发送到 Action 方法?

2024-03-06

我正在发布到服务器(.Net),但在将数组传递到控制器操作时遇到问题。我尝试了几乎所有可能的组合,但没有运气。然而,其中有一个令我困惑。

如果我执行此请求:

var dataArray = [ { /* some plain object */ }, { /* another plain object */ ], ... ];

$.ajax(url, {
   type: "post",
   data: { models: dataArray }
});

结果发送的请求数据如下

models[0][property1]:value1
models[0][property2]:value2
...
models[1][property1]:value3
models[0][property2]:value4
...

不幸的是,.Net MVC4 无法理解该请求。继相关的所以问题 https://stackoverflow.com/questions/5489461/pass-array-to-mvc-action-via-ajax我试过了traditional: true但发送到服务器的请求如下所示:

models:[object Object]

显然,发送的不是对象,而是字符串"[object Object]"。 ……这有什么问题吗?我是否注定要为每个涉及非原始参数的请求发送序列化字符串(并且必须在服务器端手动反序列化它们)?

Note: 这是我的行动方法。就目前而言,我尝试的一切结果

  1. 参数是一个正确大小的数组,但每个项目都是一个新的未修改的(空)对象或
  2. 参数为空

    [HttpPost]
    public ActionResult UpdateModels(Models.SimpleModel[] models)
    

示例 JQuery

var MyConnectionList = {
    ColorList: []
};

function SendStream() {
    MyConnectionList.ColorList.push({
        "Name": 'Test1',
        "Color": 'red'
    });

    MyConnectionList.ColorList.push({
        "Name": 'Test2',
        "Color": 'Green'
    });

    $.ajax({
        url: url,
        data: JSON.stringify(MyConnectionList),
        async: true,
        type: 'POST',
        beforeSend: function (xhr, opts) {
        },
        contentType: 'application/json; charset=utf-8',
        complete: function () {  },
        success: function (data) {
        }
    });
}

样品控制器

public ActionResult SendStream(List<Sample> ColorList)
{
    return null;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 JSON 数据发送到 Action 方法? 的相关文章

随机推荐