參考了:ajax傳遞給後台數組參數方式
1.自訂一個類用於對應datagrid編輯的資料
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
}
2.前台js提交
var _list = {};
var rows = $('#list_data').datagrid('getRows');
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
_list["list[" + i + "].Id"] = rows[i].Id; //這裡list要和背景參數名List<Category> list一樣
_list["list[" + i + "].Name"] = rows[i].Name;
}
$.ajax({
url: '/Admin/Category/SaveList',
data: _list,
dataType: "json",
type: "POST",
success: function (data) {
alert(data.rows + "," + data.result);
}
});
3.後台代碼
public ActionResult SaveList(List<Category> list)
{
string result = "";
foreach (var m in list)
result += m.Name + ",";
//供前台測試返回結果
return Json(new { rows = list.Count.ToString(), result = result });
}
4.在FireFox的Firebug顯示post資料:
list[0].Id 1
list[0].Name test111
list[1].Id 2
list[1].Name test2
list[2].Id 3
list[2].Name test3