我正在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 变量传递给此操作,以继续应用程序工作流。有可能吗?
提前谢谢。
您可以通过手动创建查询字符串来做到这一点:
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 参考