首页 > 解决方案 > 将整数列表从 AJAX 调用传递给 C# 方法返回 null

问题描述

我正在尝试使用 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]". 不确定这里是否存在类型不匹配。

标签: javascriptc#ajaxasp.net-corerazor-pages

解决方案


int32 的 Max 值为2147483647, while1609430400000超出范围,因此您收到 null 值。

代替int[],您可以使用long[]来接收值。

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

请求有效载荷:

在此处输入图像描述

结果:

在此处输入图像描述


推荐阅读