很久没有写了,最近在做一个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<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接收参数的实例。当然在实际使用时请记得加上安全验证以及数据校验。
然后在项目里面还用到了一个传输一维数组的功能这里也记录出来,代码和上面的类似,但是这个功能是用在批量删除的。
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了。欢迎各位感兴趣的同学们一起来交流学习
本文介绍了一个MVC项目中使用jQuery进行一维和二维数组传输的具体实现,包括前端JavaScript代码片段及后端接收处理方式。
5456

被折叠的 条评论
为什么被折叠?



