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调用数据参数写入此内容?
答案 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