MVC5中使用jQuery Post 二维数组和一维数组到Action
很久没有写了,最近在做一个MVC项目,这是我做的第一个MVC项目。之前可以说多MVC一点都不了解,今天把昨天遇到的一个问题记录下来。MVC大神就请飘过吧,跟我遇到同样问题的可以进来看看。遇到的第一个问题是一个列表页保存排序时传二维数组的问题。以下是我的代码:
jQuery("#btnSave").click(function () { var list = []; jQuery("#lists>tbody>tr").each(function (i) { list.push({ "id": this.cells[0].children.hidId.value, "sort": this.cells[6].children[0].children[0].children.txtSortId.value }); }); jQuery.ajax({ type: "post", url: "@Url.Action("NavSaveSortId", "Setting")", data: jQuery.param({ sortinfo: list }), dataType: "json", traditional: true, success: function (data) { var json = eval("(" + data + ")");//必须加否则字符串不能序列化成json jQuery.gritter.add(json); }, error: function (data) { console.debug(data); } }); });
以上传过去的数据格式是一个数组类型,里面包括了id,sort属性。
后台action接收代码为:
[HttpPost] 02 public JsonResult NavSaveSortId(Dictionary<string, string>[] sortinfo) 03 { 04 for (int i = 0; i < sortinfo.Length; i++) 05 { 06 int id = Convert.ToInt32(sortinfo[i]["id"].ToString()); 07 int sortId; 08 if (!int.TryParse(sortinfo[i]["sort"].ToString().Trim(), out sortId)) 09 { 10 sortId = 99; 11 } 12 client.UpdateField(id, "sort_id=" + sortId.ToString()); 13 } 14 }
以上就是传输数组后台用Dictionary接收参数的实例。当然在实际使用时请记得加上安全验证以及数据校验。
然后在项目里面还用到了一个传输一维数组的功能这里也记录出来,代码和上面的类似,但是这个功能是用在批量删除的。
jQuery("#btnDelete").click(function () { 02 bootbox.confirm("确认要删除选中的记录吗?", function (result) { 03 if (result) { 04 var idarry = []; 05 jQuery("#lists>tbody>tr").each(function (i) { 06 console.debug(this.cells[0].children[2].children[0].checked); 07 if (this.cells[0].children[2].children[0].checked) { 08 idarry.push(this.cells[0].children.hidId.value); 09 } 10 }); 11 jQuery.ajax({ 12 type: "post", 13 url: "@Url.Action("NavDel", "Setting")", 14 data: { ids: idarry }, 15 dataType: "json", 16 traditional: true, 17 success: function (data) { 18 var json = eval("(" + data + ")");//必须加否则字符串不能序列化成json 19 jQuery.gritter.add(json); 20 }, 21 error: function (data) { 22 console.debug(data); 23 } 24 }); 25 } 26 }); 27 });
这个数组应该比上面那种更常见后台接收就不需要用Dictionary。直接用数组string[]接收就可以了:
[HttpPost] 2 public JsonResult NavDel(string[] ids) 3 { 4 //逻辑处理···· 5 }
其实在开发中还遇到了很多问题,可能是我第一次接触mvc。不过真的用了mvc之后确实不太愿意用webform了。欢迎各位感兴趣的同学们一起来交流学习