Asp.net mvc ASP.NET/MVC HTML ActionLink-如何将返回的Javascript值传递给ActionLink routeValue参数?

Asp.net mvc ASP.NET/MVC HTML ActionLink-如何将返回的Javascript值传递给ActionLink routeValue参数?,asp.net-mvc,Asp.net Mvc,(目标框架为4.0) 我正在实现一个功能来删除一个简单表中的多个记录。为了做到这一点,我使用带有Javascript函数的简单HTML复选框来循环遍历每一个复选框,以找到所选的复选框。Javascript返回一个int值数组,该数组表示要删除的记录ID 我使用ActionLink调用所有这些,并最终返回控制器文件中的Delete函数(使用int数组作为parm),以实际将删除提交到数据库 我的问题是,我不知道如何将从Javascript返回的数组放入ActionLink,并将其传递给控制器 以下

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

@ActionLink(“添加新”、“添加”)|@Html.ActionLink(“删除选定项”、“删除项”、“新建{id=“???””},新建{onclick=“return getProjectsToDelete()”})

函数getProjectsToDelete(){ var answer=confirm(“您确定要删除所选项目吗?”); 若有(答复){ var listToDelete=新数组(); var arrayCount=0; 对于(i=0;i
如果我理解正确,您想知道如何将ID集合推回控制器吗

通常,这将作为一个表单完成,并将表单发布到后端。我自己更喜欢通过AJAX来实现这一点,但那只是我自己

虽然您可以使用GET并将所有id填充到查询字符串中来实现这一点,但它是脏的

它看起来像/controller/action?id=7&id=8&id=9

NET中的模型绑定器将其转换为列表或int[]


我建议在Javascript中使用“.push”来管理ID数组。您还可以在数组中使用“.join”方法创建干净的查询字符串。

我重新阅读了您的代码,发现您可能不了解onclick事件的工作原理。OnClick是一种客户端方法,用于在客户端执行脚本,以便在执行单击之前执行一些工作。如果您的事件返回“false”,则单击将中止,操作将不会发生。不能使用OnClick事件将任何类型的数据返回到后端控制器。您只能通过HTTP GET(URL查询字符串或通过AJAX)或HTTP POST(表单提交或AJAX)传回数据请记住,ActionLink仅根据您设置的路由生成带有URL的链接。