我在js函数中处理一些客户端数据,我需要将变量传递给控制器操作。这是我的功能:
function Save() {
var matrixIds = [];
//Do something
//Then create the URL and pass the parameter
document.location = "ConciliacionItem/DetallesConciliacionManual/" + $.param({ matriz : matrixIds });
到目前为止,我已尝试过几种方法,但我无法进入Controller Action。唯一可行的方法是使用像这样的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变量传递给此操作,以继续应用程序工作流程。有可能吗?
提前致谢。
答案 0 :(得分:2)
您可以通过手动创建查询字符串来完成此操作:
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数组,以便您进行操作
答案 1 :(得分:0)
您仍然可以使用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");
}