通过GET请求将二维javascript数组传递给控制器操作

本文关键字:数组 javascript 操作 控制器 二维 请求 GET 通过 | 更新日期: 2023-09-27 18:37:25

我正在js函数中处理一些客户端数据,我需要将变量传递给控制器操作。这是我的函数:

function Save() {
        var matrixIds = [];
        //Do something
        //Then create the URL and pass the parameter
        document.location = "ConciliacionItem/DetallesConciliacionManual/" + $.param({ matriz : matrixIds });

到目前为止,我已经尝试了几种方法,但无法进入控制器操作。唯一有效的是使用像这样的Ajax调用:

setTimeout(function () {
        $.ajax({
            type: "POST",
            url: myUrl,
            data: JSON.stringify({
                matriz: matrixIds
            }),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            traditional: true
        });
    }, 500);

如果我这样做,我有以下问题:我需要处理从此视图发送的数据,结果转到另一个视图,如下所示:

public ActionResult DetallesConciliacionManual(int[][] matriz)
    {
        //Variable to process
        List<ConciliacionItem> listasAConciliar = new List<ConciliacionItem>();
        //Do a lot of things
        return View(listasAConciliar);
    }

因此,我需要做的是能够将函数的 js 变量传递给此操作,以继续应用程序工作流。有可能吗?

提前谢谢。

通过GET请求将二维javascript数组传递给控制器操作

您可以通过手动创建查询字符串来做到这一点:

function Save() {
    var matrixIds = [];
    //Do something
    //Then create the URL and pass the parameter
    document.location = "ConciliacionItem/DetallesConciliacionManual?" + createQueryString('matriz', matrixIds);
}
function createQueryString(sendName, items)
{
    var result = '';
    for (var i = 0; i < items.length; i++) {
        for (var j = 0; j < items[i].length; j++) {
            result += sendName + '[' + i + '][' + j + ']=' + items[i][j] + '&';
        }
    }
    return result;
}

所以你会得到一个字符串,

比如
matriz[0][0]=0&matriz[0][1]=1&...

这将成功解析为二维 int 数组供您操作

您可能仍然使用 ajax 方法,然后在处理数据后,您可能需要执行以下操作:

public ActionResult DetallesConciliacionManual(int[][] matriz)
{
    //Variable to process
    List<ConciliacionItem> listasAConciliar = new List<ConciliacionItem>();
    //Do a lot of things
    //Returns another view.
    return RedirectToAction("Action", "Controller");
}

MSDN 参考