MVC5中使用jQuery Post 二维数组和一维数组到Action

本文介绍了一个MVC项目中使用jQuery进行一维和二维数组传输的具体实现,包括前端JavaScript代码片段及后端接收处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很久没有写了,最近在做一个MVC项目,这是我做的第一个MVC项目。之前可以说多MVC一点都不了解,今天把昨天遇到的一个问题记录下来。MVC大神就请飘过吧,跟我遇到同样问题的可以进来看看。遇到的第一个问题是一个列表页保存排序时传二维数组的问题。以下是我的代码:

01 jQuery("#btnSave").click(function () {
02     var list = [];
03     jQuery("#lists>tbody>tr").each(function (i) {
04         list.push({ "id"this.cells[0].children.hidId.value, "sort"this.cells[6].children[0].children[0].children.txtSortId.value });
05     });
06   
07     jQuery.ajax({
08         type: "post",
09         url: "@Url.Action("NavSaveSortId", "Setting")",
10         data: jQuery.param({ sortinfo: list }),
11         dataType: "json",
12         traditional: true,
13         success: function (data) {
14             var json = eval("(" + data + ")");//必须加否则字符串不能序列化成json
15             jQuery.gritter.add(json);
16         },
17         error: function (data) {
18             console.debug(data);
19         }
20     });
21 });

以上传过去的数据格式是一个数组类型,里面包括了id,sort属性。
后台action接收代码为:

01 [HttpPost]
02 public JsonResult NavSaveSortId(Dictionary<stringstring>[] 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接收参数的实例。当然在实际使用时请记得加上安全验证以及数据校验。
然后在项目里面还用到了一个传输一维数组的功能这里也记录出来,代码和上面的类似,但是这个功能是用在批量删除的。

01 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[]接收就可以了:

1 [HttpPost]
2         public JsonResult NavDel(string[] ids)
3         {
4 //逻辑处理····
5 }

其实在开发中还遇到了很多问题,可能是我第一次接触mvc。不过真的用了mvc之后确实不太愿意用webform了。欢迎各位感兴趣的同学们一起来交流学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值