(目标框架是4.0)
我正在实现一个删除简单表中多个记录的功能。为了做到这一点,我使用带有Javascript函数的简单HTML复选框来遍历每个复选框以查找所选的。 Javascript返回一个int值数组,表示要删除的记录ID。
我正在使用ActionLink来调用所有这些,并最终返回到我的控制器文件中的Delete函数(使用int数组作为parm)来实际将删除提交到数据库。
我的问题是,我不知道如何将我从Javascript返回的数组放入ActionLink,将其传递给控制器。
以下是我正在使用的代码:
<p>
@Html.ActionLink("Add New", "Add") | @Html.ActionLink("Delete Selected", "Delete", new { id = "???" }, new { onclick = "return getProjectsToDelete()" })
</p>
<script type="text/javascript">
function getProjectsToDelete() {
var answer = confirm("Are you sure you wish to delete the selected projects?");
if (answer) {
var listToDelete = new Array();
var arrayCount = 0;
for (i = 0; i < document.projectList.deleteProject.length; i++) {
if (document.projectList.deleteProject[i].checked) {
listToDelete[arrayCount] = document.projectList.deleteProject[i].value;
arrayCount++;
}
}
return listToDelete;
}
}
</script>
答案 0 :(得分:1)
如果我理解正确,您想知道如何将ID集合推回控制器吗?
通常,这将以FORM形式完成,并将表单发布到后端。我自己更喜欢通过AJAX这样做,但那就是我。
虽然您可以使用GET并填充查询字符串中的所有ID,但它很脏!
它看起来像/ controller / action?id = 7&amp; id = 8&amp; id = 9
.NET中的Model Binder会将其转换为List&lt; int&gt;或int []。
我建议在Javascript中使用“.push”来管理你的ID数组。您还可以在数组上使用“.join”方法来创建一个干净的查询字符串。