0

我正在尝试使用 Javascript 将 orderlines 列表传递给异步控制器操作:

var model = "<some JSON string>";
$.ajax({ type: "POST",
  url: "/MyController/MyAction",
  datatype: "json",
  data: { 'orderLines': model},
  success: function(msg) {
     ...
  }
});

当我在运行时检查模型变量时,orderline 属性的值设置正确。但是,当我在控制器操作中放置断点时,orderline 传入参数的属性为 0。看起来 JSON 字符串没有正确反序列化。

控制器动作如下所示:

public ActionResult AsyncUpdateOrderline(List<OrderLine> orderLines)
{
  ...
}

如何正确地将复杂对象传递给异步控制器操作?

谢谢,尼尔斯

4

1 回答 1

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模型的结构。

于 2013-03-11T10:53:21.847 回答