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]
public JsonResult NavSaveSortId(Dictionary<string, string>[] sortinfo)
{
    for (int i = 0; i &lt; sortinfo.Length; i++) 
    {
        int id = Convert.ToInt32(sortinfo[i]["id"].ToString());
        int sortId;
        if (!int.TryParse(sortinfo[i]["sort"].ToString().Trim(), out sortId))
        {
            sortId = 99;
        }
        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[0].children[2].children[0].checked);
                if (this.cells[0].children[2].children[0].checked) {
                    idarry.push(this.cells[0].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》https://www.fangsi.net/1028.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
锋哥的头像锋哥管理员
上一篇 2014年8月10日 17:57
下一篇 2014年10月30日 11:01

相关推荐

发表回复

登录后才能评论

评论列表(1条)