MVC 从 Javascript 调用新的 Action 和 View 并发送 Array

Posted

技术标签:

【中文标题】MVC 从 Javascript 调用新的 Action 和 View 并发送 Array【英文标题】:MVC Call new Action and View from Javascript and send Array 【发布时间】:2016-08-28 09:37:05 【问题描述】:

我目前在网格中有一个 IEnumerable 视图,我添加了复选框,以允许我选择项目(我通过 javascript 获取 id 并构建一个仅包含 id 的数组)。

我有一个按钮,它应该将数组发送到一个新动作并加载相应的视图。

我最初尝试通过有效的 JSON 对象发送数组,但我无法让控制器加载新视图,它只是将结果返回到当前视图(不是我想要的)。

所以我现在只是尝试以下方法:

window.location.href = '/TeamSelector/TeamList?array=' +SwimmerList;

这是有效的,但对象没有被正确发送,因为我在控制器端的数组中没有收到任何内容。

    public ActionResult TeamList (List<int> Array)
    
    // Do something here
    return view(results)
    

有人可以告诉我如何构造 JavaScript 代码以发送数组,以便控制器接受它。

任何建议/建议将不胜感激。

安迪。

【问题讨论】:

它需要是/TeamSelector/TeamList?array=1&amp;array=2&amp;array=3 @StephenMuecke 非常感谢您的快速回答。我刚刚测试过,它第一次工作。我将编写一些代码来遍历数组并将文本添加到 url(这可能需要我 3 周和另外 4 个 SO 问题)。斯蒂芬您能否将其发布为答案,以便我标记它,您为我解决了另一个问题,非常感谢。 如果您给我 30 分钟,我还会向您展示如何使用 javascript 数组中的值生成它:) @StephenMuecke,不,请不要,我会弄清楚的,当我们完全陷入困境时,你的时间最好花在帮助我这样的人上!!我已经有了基础知识,不应该花太长时间:) 好的,但我稍后会更新它:) 【参考方案1】:

为了将一组值回传到带有签名的 GET 方法

public ActionResult TeamList (List<int> Array)

你的网址必须是

/TeamSelector/TeamList?array=1&array=2&array=3 // etc

实现此目的的一种方法是(假设您的复选框有 class="checkbox"

location.href = '/TeamSelector/TeamList?array=' + $('.checkbox:checked').map(function () 
    return $(this).val();
).get().join('&array=');

【讨论】:

不幸的是,我一直坚持使用 Grid.MVC 的路线,我发现随着时间的推移,它非常有限,而且是一个非常死的插件。其中的复选框功能很奇怪,显示了两个复选框,我似乎无法更新它们,所以我添加了单击功能来手动构建我的数组。如果没有 Grid MVC,您的优雅解决方案将是完美的。【参考方案2】:

感谢 Stephen 和他的回答,我编写了一个基本脚本来使用数组数据构建 url,现在一切正常。

        var url = '/TeamSelector/TeamList?';
    for (var i = 0; i < SwimmerList.length; i++)
    
        if (i == 0) 
            url = url + 'array=' + SwimmerList[i];
         else 
            url = url + '&array=' + SwimmerList[i];
        
    
    window.location.href = url;

由于我使用Grid.MVC,我一直在努力使用复选框并获取它们的状态,所以我最终在复选框中添加了一个点击按钮,并以这种方式控制它来构建我的数组。

【讨论】:

以上是关于MVC 从 Javascript 调用新的 Action 和 View 并发送 Array的主要内容,如果未能解决你的问题,请参考以下文章

从asp.net mvc中的switch case调用javascript函数

如何使用asp.net MVC中的href从javascript在新窗口中打开打开的窗口

从按钮单击调用MVC Razor Ajax

JSTree在MVC4中从视图调用到控制器

MVC如何从视图调用控制器中的动作以返回值

如何从 javascript 文件中获取函数的值到 ASP.NET MVC 视图?