我有以下要我发送列表/数组到MVC控制器方法:
var id = []; var inStock = []; $table.find('tbody>tr').each(function() { id.push($(this).find('.id').text()); inStock.push($(this).find('.stocked').attr('checked')); }); var params = {}; params.ids = id; params.stocked = inStock; $.getJSON('MyApp/UpdateStockList',params,function() { alert('finished'); });
在我的轮廓:
public JsonResult UpdateStockList(int[] ids,bool[] stocked) { }
两个参数都为空。
请注意,如果我将参数更改为单个项目
params.ids = 1; params.stocked = true; public JsonResult UpdateStockList(int ids,bool stocked) { }
那么它可以正常工作,所以我不认为这是一个路由问题。
解决方法
尝试设置传统旗帜:
$.ajax({ url: '/home/UpdateStockList',data: { ids: [1,2,3],stocked: [true,false] },traditional: true,success: function(result) { alert(result.status); } });
适用于:
public ActionResult UpdateStockList(int[] ids,bool[] stocked) { return Json(new { status = "OK" },JsonRequestBehavior.AllowGet); }