如何将 Javascript 数组传递给视图? (MVC4)

How to pass a Javascript Array to a View ? (MVC4)

我在我的一个视图中使用 jquery 数据表,并希望生成包含过滤数据结果的报告,因此要生成报告,我能想到的最简单的解决方案是生成一个 pdf 文件(在视图中),无论如何,为了获得过滤结果,我使用以下方法:

myDataTableHandle = $('#example1').dataTable(...);
var myFilteredRows = myDataTableHandle._('tr', {"filter":"applied"});

要通过单击从 js 文件打开视图,我发现我可以使用类似的东西:

function foo(id) {
    var url = '@Url.Action("Details", "Branch", new { id = "__id__" })';
    window.location.href = url.replace('__id__', id);
}

现在我想知道是否有一种方法可以将 js 数组传递给 MVC 视图,换句话说就是 myFilteredRows,或者是否有另一种方法可以将过滤后的结果传递给控制器​​,然后从那里调用视图?

我希望我的问题很清楚

在我看来,您在理解这件事的工作原理方面存在差距。在您编写的 js 代码 (foo(id)) 中,您没有调用视图,而是向服务器端发出请求,因此这是通过控制器传递的(正在调用操作方法分支——在那里放置一个断点检查),然后操作方法调用视图,它会在客户端返回给您。

同样在您将 id 参数传递给控制器​​操作方法的函数中,您可以同样的方式将数组作为字符串传递,但是您需要更新控制器上该操作方法的签名。

public ActionResult Branch(int id, string array)

然后您需要编辑您的视图以从控制器接受这个数组,方法是将它添加到视图包中

ViewBag.array = array

或者,如果分支视图正在接受模型,您可以将其添加到模型中。在视图中,您必须在 js 块中定义一个数组来接受它,像这样(这可能无法按原样工作,您必须在浏览器中调试 js 直到正确为止)

var array = [@ViewBag.array];

视图是 HTML 内容的 MVC 术语,它是我们在服务器端处理的内容,您的控制器在 MVC 框架的帮助下使用视图从控制器传递数据到视图。当您谈论客户端时,现在谈论视图变得模糊。我希望你明白这一点。