ASP.NET / MVC HTML ActionLink - 如何将返回的Javascript值传递给ActionLink routeValue parm?

时间:2011-08-09 02:38:43

标签: asp.net-mvc

(目标框架是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>

1 个答案:

答案 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”方法来创建一个干净的查询字符串。