8

我使用 ASP.NET-MVC。我尝试在 ajax 中发布一个数组,但我不知道如何在我的控制器中获取它。这是我的代码:

阿贾克斯

var lines = new Array();
lines.push("ABC");
lines.push("DEF");
lines.push("GHI");
$.ajax(
{
    url: 'MyController/MyAction/',
    type: 'POST',
    data: { 'lines': lines },
    dataType: 'json',
    async: false,
    success: function (data) {
        console.log(data);
    }
});

我的控制器

public JsonResult MyAction(string[] lines)
{
    Console.WriteLine(lines); // Display nothing
    return Json(new { data = 0 });
}

为什么我看不到我的台词?如何正确发布此数组并在 MyAction 中使用它?

4

2 回答 2

16

设置contentType: "application/json"选项和JSON.stringify您的参数:

var lines = new Array();
lines.push("ABC");
lines.push("DEF");
lines.push("GHI");
$.ajax(
{
    url: 'MyController/MyAction/',
    type: 'POST',
    data: JSON.stringify({ 'lines': lines }),
    dataType: 'json',
    contentType: 'application/json',
    async: false,
    success: function (data) {
        console.log(data);
    }
});

如果在您的业务案例中有意义,您还可以设置获取的对象类型。例子:

public JsonResult MyAction(string[] lines)
{
    Console.WriteLine(lines); // Display nothing
    return Json(new { data = 0 });
}

而且,您发送的内容更实用:

public class MyModel {
    string[] lines;
}

最后:

public JsonResult MyAction(MyModel request)
{
    Console.WriteLine(string.Join(", ", request.lines)); // Display nothing
    return Json(new { data = 0 });
}
于 2013-11-04T13:19:28.247 回答
-1

首先,尝试改变:

data: { 'lines': lines }

data: { lines: lines },

如果没有帮助,请尝试使用 json.stringify(lines)

于 2013-11-04T13:23:06.847 回答