【问题标题】:MVC Call new Action and View from Javascript and send ArrayMVC 从 Javascript 调用新的 Action 和 View 并发送 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,不,请不要,我会弄清楚的,当我们完全陷入困境时,你的时间最好花在帮助我这样的人上!!我已经有了基础知识,不应该花太长时间:)
  • 好的,但我稍后会更新它:)

标签: javascript c# arrays asp.net-mvc-5 window.location


【解决方案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,我一直在努力使用复选框并获取它们的状态,所以我最终在复选框中添加了一个点击按钮,并以这种方式控制它来构建我的数组。

【讨论】:

    猜你喜欢
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多