如何在MVC中的动作中从javascript传递所选对象的列表?

我有一个大型数据表,其中包含每行的复选框。 我需要传递所有被选为逗号分隔列表的项目,或者更好的是将强类型IList传递给控制器​​。 完成此任务的最佳方法是什么? 我知道我可以传递一个没有问题的字符串,但是如何选择哪个复选框?

这是静态代码的样子:

@using (@Html.BeginForm("RemoveItems", "ResultList", new { IDList = "1,2,3,4" }, FormMethod.Post)) {  } 

你可以使用jQuery这样做。

  $.ajax({ url: "/MyAction/Array", data: JSON.stringify({ model: input }), type: "POST", contentType: "application/json" }); 

这里“输入”是你的数组,“模型” – 动作参数的名称。 确保您已将contentType指定为application / json。

我有一个类似于你的网站。

我的每一行都有一张带复选框的表格。

我做的是:

 var firstPriorityArray = new Array(); $("Input:checkbox[name=FirstPriority]:checked").each(function () { firstPriorityArray[firstPriorityArray.length] = $(this).val(); console.log(fp.toString()); }); 

console.log只能看到发生了什么以及它看起来如何:)

之后我使用了JSON.Stringify()和一个对象并将其发送回另一个使用AJAX的ASPX站点,如下所示:

 var o = new Object(); o.primary = firstPriorityArray; var json = JSON.stringify(o); $.ajax({ url: 'getMeAJAX.aspx', type: 'POST', data: "json=" + json, success: function (response) { //On success }, error: function (xhr, ajaxoptions, thrownError) { alert(thrownError); } }); 

也许你可以使用它或受到启发。 我不能说如果这是“完美”和最“MVC”的方式,但它的工作原理;)

// Gerner