【发布时间】:2021-04-22 14:20:20
【问题描述】:
我正在尝试使用 ajax 将整数数组从客户端 javascript 传递到服务器端 C#。然而,它在代码隐藏中总是以 null 出现。我似乎无法在这里找到问题。我有一个类似的 ajax 方法,但是使用了一个字符串数组,它可以工作,但它不能使用整数?
我的ajax方法:
var theList = [1,2,3,4,5];
$.ajax({
type: 'POST',
url: 'MyPage?handler=SaveList',
dataType: 'json',
contentType:'application/json; charset=utf-8',
headers: {
RequestVerificationToken:
$('input:hidden[name="__RequestVerificationToken"]').val()
},
data: JSON.stringify({ theList: theList }),
success: function(data){
alert("Success");
}
});
我的代码隐藏:
public JsonResult OnPostSaveList([FromBody]int[] theList) //<<<Returns 'null'
{
foreach(int data in theList){
//save to datebase
}
return new JsonResult("Done");
}
这里的问题是我在代码隐藏中从theList 获得了一个空值。
检查 JSON.stringify,它似乎通过了"[1,2,3,4,5]"。不确定这里是否存在类型不匹配。
【问题讨论】:
-
请通过 Chrome 开发者工具 -> 网络选项卡向我们展示正在传递的确切有效负载。
-
{"dateList":[1609430400000,1609516800000]}
-
这不像
[1,2,3,4,5]。 -
它还有一个不同的名称
dateList与theList- C# 将匹配 名称,因此它们需要匹配。 -
你说得对,它不是。如果我使用
JSON.stringify({ theList: theList}),那么payload就变成{"theList":[1609430400000,1609516800000,1609603200000]}如果我使用JSON.stringify(theList),那么它就变成[1609430400000,1609516800000,1609603200000]。
标签: javascript c# ajax asp.net-core razor-pages