我目前在网格中有一个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代码以发送数组,以便控制器接受它。
非常感谢任何建议/意见。
安迪。
答案 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,我一直在努力使用复选框并获取它们的状态,因此我最终添加了一个单击复选框,我控制它以构建我的阵列。