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[].children.hidId.value, "sort": this.cells[].children[].children[].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]

public JsonResult NavSaveSortId(Dictionary<string, string>[] sortinfo)

{

for (int i = ; i < sortinfo.Length; i++)

                {

                    int id = Convert.ToInt32(sortinfo[i]["id"].ToString());

                    int sortId;

                    if (!int.TryParse(sortinfo[i]["sort"].ToString().Trim(), out sortId))

                    {

                        sortId = ;

                    }

                    client.UpdateField(id, "sort_id=" + sortId.ToString());

                }

}

以上就是传输数组后台用Dictionary接收参数的实例。当然在实际使用时请记得加上安全验证以及数据校验。
然后在项目里面还用到了一个传输一维数组的功能这里也记录出来,代码和上面的类似,但是这个功能是用在批量删除的。

jQuery("#btnDelete").click(function () {

                bootbox.confirm("确认要删除选中的记录吗?", function (result) {

                    if (result) {

                        var idarry = [];

                        jQuery("#lists>tbody>tr").each(function (i) {

                            console.debug(this.cells[].children[].children[].checked);

                            if (this.cells[].children[].children[].checked) {

                                idarry.push(this.cells[].children.hidId.value);

                            }

                        });

                        jQuery.ajax({

                            type: "post",

                            url: "@Url.Action("NavDel", "Setting")",

                            data: { ids: idarry },

                            dataType: "json",

                            traditional: true,

                            success: function (data) {

                                var json = eval("(" + data + ")");//必须加否则字符串不能序列化成json

                                jQuery.gritter.add(json);

                            },

                            error: function (data) {

                                console.debug(data);

                            }

                        });

                    }

                });

            });

这个数组应该比上面那种更常见后台接收就不需要用Dictionary。直接用数组string[]接收就可以了:

[HttpPost]

        public JsonResult NavDel(string[] ids)

        {

//逻辑处理····

}

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

转载请注明:放肆雷特 » MVC5中使用jQuery Post 二维数组和一维数组到Action

上一篇:db2 load乱码问题


下一篇:int指令