繁体   English   中英

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

[英]How to send a list of int from Javascript (Ajax) to C#?

通常我会写

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

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

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

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

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

我的服务器端应该是

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

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

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"
})

默认情况下,使用形式编码。 请求正文将如下所示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM