用于json嵌套数组的MVC3绑定

Rod*_*cia 4 data-binding asp.net-mvc json asp.net-mvc-3

我有一个简单的javascript数组.它的声明如下:

coords = []
Run Code Online (Sandbox Code Playgroud)

每次用户点击图片时,我都会这样做:

coords.push([x,y])
Run Code Online (Sandbox Code Playgroud)

所以我最终得到这样的东西:(在javascript中)

[[342,144],[477,99],[632,148],[529,162]]
Run Code Online (Sandbox Code Playgroud)

但我不知道在控制器方法中将它绑定到什么...我试过了

List<List<int>>, int[][], int[,]
Run Code Online (Sandbox Code Playgroud)

他们似乎都没有工作.它只在我使用字符串时才有效.

这是我用来将它发送到服务器的代码:

$.ajax({
    type: "POST",
    url: "/home/SaveCoords",
    data: { coords: JSON.stringify(coords) }
}).done(function (msg) {
    alert("Data Saved: " + msg);
});
Run Code Online (Sandbox Code Playgroud)

这是我在控制器上使用的代码

[HttpPost]
public ActionResult SaveCoords(string coords)
{
    return Json("Hello", JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)

救命?

arc*_*hil 6

您应该将请求内容类型设置为application/json,并相应地进行更改data.

这是工作示例:

    $.ajax({
        type: "POST",
        url: "/home/SaveCoords",
        contentType : 'application/json',
        data: JSON.stringify(coords)
    }).done(function (msg) {
        alert("Data Saved: " + msg);
    });
Run Code Online (Sandbox Code Playgroud)

和服务器

    public ActionResult SaveCoords(int[][] coords)
    {
        return View();
    }
Run Code Online (Sandbox Code Playgroud)