我正在发布到服务器(.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: 这是我的行动方法。就目前而言,我尝试的一切结果
- 参数是一个正确大小的数组,但每个项目都是一个新的未修改的(空)对象或
-
参数为空
[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(使用前将#替换为@)