如何从Javascript(Ajax)向C#发送int列表?

时间:2015-11-09 14:17:22

标签: javascript c# ajax

normaly我会写

 $.ajax({
            url: '@Url.Action("PlantHistoryContent", "PlantStatus")',
            data: {id: 1},
            async: false,
            type: "POST"
        })

当我想在C#中将整数id传递给服务器端时:

public void PlantHistoryContent(int id)
{
 ///
}

如何对整数列表做同样的事情?

所以我有一个未知长度的对象列表,并希望将其作为列表传递给服务器端?

我的服务器端应该是

public void PlantHistoryContent(List<int> id)
{
 ///
}

如何将ajax调用数据参数写入此内容?

1 个答案:

答案 0 :(得分:2)

JavaScript中的列表如下所示:

var list = [ 1, 2, 3, 4 ];

要构建它,您可以这样做:

var list = [];
list.push(1);
list.push(2);
list.push(3);
list.push(4);

然后当你发送它时,你可以这样做:

$.ajax({
    url: '@Url.Action("PlantHistoryContent", "PlantStatus")',
    data: { ids: list },
    async: false,
    type: "POST"
})

$.ajax({
    url: '@Url.Action("PlantHistoryContent", "PlantStatus")',
    data: { ids: [ 1, 2, 3, 4 ] },
    async: false,
    type: "POST"
})

默认使用form-encoding。请求正文如下:

ids[0]=1&ids[1]=2&ids[2]=2&ids[3]=3

使用表单编码,无法知道参数的类型。他们都是字符串。

如果您使用JSON作为传输编码,则可以发送整数,因为JSON知道字符串和整数以及列表等。

$.ajax({
    url: '@Url.Action("PlantHistoryContent", "PlantStatus")',
    data: { data: JSON.stringify({ ids: [ 1, 2, 3, 4 ] }) },
    async: false,
    type: "POST"
})

现在您的请求正文如下:

data=%5B1%2C2%2C3%2C4%5D