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

时间:2016-05-03 11:09:11

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

我目前在网格中有一个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代码以发送数组,以便控制器接受它。

非常感谢任何建议/意见。

安迪。

2 个答案:

答案 0 :(得分:2)

为了使用签名

将一组值回发给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=');

答案 1 :(得分:1)

感谢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,我一直在努力使用复选框并获取它们的状态,因此我最终添加了一个单击复选框,我控制它以构建我的阵列。