我正在尝试使用Javascript将订单行列表传递给异步控制器操作:
var model = "<some JSON string>";
$.ajax({ type: "POST",
url: "/MyController/MyAction",
datatype: "json",
data: { 'orderLines': model},
success: function(msg) {
...
}
});
当我在运行时检查模型变量时,订单行属性的值设置为ok。但是当我在我的控制器动作中放置断点时,订单行传入参数的属性为0.看起来JSON字符串未正确反序列化。
控制器操作如下所示:
public ActionResult AsyncUpdateOrderline(List<OrderLine> orderLines)
{
...
}
如何正确地将复杂对象传递给异步控制器操作?
谢谢, 尼尔斯
答案 0 :(得分:6)
您需要设置请求Content-Type标头,并使用JSON.stringify
方法将数据发送到控制器:
var model = [
{ quantity: 1, name: 'some name 1' },
{ quantity: 2, name: 'some name 2' }
];
$.ajax({
url: '/MyController/MyAction',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({ orderLines: model }),
success: function(msg) {
...
}
});
注意模型不应该是JSON字符串,而是javascript数组对象,其中每个元素都反映了OrderLine
模型的结构。