Javascript 将AJAX调用中的整数列表传递给C#方法将返回null
我试图使用ajax将一组整数从客户端javascript传递到服务器端C#。然而,在代码隐藏中它总是显示为null。我似乎找不到问题所在。我有一个类似的ajax方法,但是使用了一个字符串数组,它可以工作,但是不使用整数 我的ajax方法:Javascript 将AJAX调用中的整数列表传递给C#方法将返回null,javascript,c#,ajax,asp.net-core,razor-pages,Javascript,C#,Ajax,Asp.net Core,Razor Pages,我试图使用ajax将一组整数从客户端javascript传递到服务器端C#。然而,在代码隐藏中它总是显示为null。我似乎找不到问题所在。我有一个类似的ajax方法,但是使用了一个字符串数组,它可以工作,但是不使用整数 我的ajax方法: var theList = [1,2,3,4,5]; $.ajax({ type: 'POST', url: 'MyPage?handler=SaveList', dataType: 'json', contentType:'
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");
}
public JsonResult OnPostSaveList([FromBody]int[]theList)/int32的最大值是2147483647
,而1609430400000
超出范围,因此您会收到空值
您可以使用long[]
来接收值,而不是int[]
var theList = [1609430400000, 1609516800000, 1609603200000];
$.ajax({
type: 'POST',
url: 'Index?handler=SaveList',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
headers: {
RequestVerificationToken:
$('input:hidden[name="__RequestVerificationToken"]').val()
},
data: JSON.stringify(theList),
success: function (data) {
alert("Success");
}
});
处理程序:
public JsonResult OnPostSaveList([FromBody] long[] theList) //<<<Returns 'null'
{
foreach (var data in theList)
{
//save to datebase
}
return new JsonResult("Done");
}
public-JsonResult-OnPostSaveList([FromBody]long[]theList)//请从Chrome开发者工具->网络选项卡中向我们显示所传递的确切负载。{“日期列表”:[16094304000001609516800000]}看起来不像[1,2,3,4,5]
。它还有一个不同的名称日期列表
与列表
-C>将匹配名称,因此它们需要匹配。你说得对,事实并非如此。如果我使用JSON.stringify({theList:theList})
那么有效载荷就变成了{“theList”:[16094304000001609516800001603200000]
如果我使用JSON.stringify(theList)
那么它就变成了[16094304000001609516800001603200000]
。嗨@Aaron Yong,这行得通吗?嗨@mj1313,谢谢你详细的回答。我在发布之前的答案后不久就发现了这种情况。谢谢你的帮助!对不起,我花了这么长时间才回复。干杯