Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将AJAX调用中的整数列表传递给C#方法将返回null_Javascript_C#_Ajax_Asp.net Core_Razor Pages - Fatal编程技术网

Javascript 将AJAX调用中的整数列表传递给C#方法将返回null

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:'

我试图使用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");
}

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,谢谢你详细的回答。我在发布之前的答案后不久就发现了这种情况。谢谢你的帮助!对不起,我花了这么长时间才回复。干杯