asp.net中使用JQuery的join()传递一个字符串数组到控制器并在后台解析该数组的方法

4 篇文章 0 订阅
3 篇文章 0 订阅

问题描述:
这里写图片描述
在上图复选框checkbox中选中多个要删除的专业名称,当点击删除按钮时把选中的专业删除。
要求使用 ajax 实现异步地删除,减少刷新网页的次数。

asp.net mvc里前端与后台进行复杂数据交互是一件比较麻烦的事情,简单的数据交互可以使用request对象获取同名参数的方式获取,
复杂数据一般难以使用request对象获取,比如表单里提交的各种不同类型的数据,
如果表单里的各种数据可以抽象成一个类,那么就可以通过创建一个model,然后在action里使用模型对象进行绑定。

public ActionResult JsonClasses(ClassesModels classes)

但在此例中要删除的专业显然不能抽象成一个类,只是一个长度不确定的数组。
要使用ajax往控制器里传递这些需要删除的专业,只能以数组的形式传递,
但需要将数组序列化后传递才能被控制器端接收,下面本人通过Jqery的join()方法转化为可被解析的数据格式

$('#delmajor').click(function () {

        var datas =[];
        var i = 0;
        $('input[name="delmajor"]:checked').each(function () {
            var temp = $(this).parent().parent();
            datas[i++] = $(this).val();
            temp.remove();
        });
        if (datas != null) {
            var choose = confirm("您确定要删除这专业?");
            var test = datas.join(',');
            alert(test);
            if (choose==true) {
                $.ajax({
                    url: "/SystemAdmin/DelMajor",
                    type: "POST",
                    dataType: "json",
                    data: { "test": test },
                    success: function (data) {
                        alert(data.message);
                    },
                    error: function () {
                        alert("删除失败!");
                    }

                });
            } else {
                return false;
            }

        }

    });
控制器端代码如下:
public ActionResult DelMajor()
        {
            var message = Request["test"];
            string[] majornames = message.Split(',');
            var  helper=new MajorTableHelper();
            int affectLine= helper.DelMajor(majornames);
            if (affectLine>0)
            {
                return Json(new { message = "success" });
            }
            else
            {
                return Json(new { message = "fail" });
            }

        }
DelMajor()方法如下
 public int DelMajor(string[] majorname)
        {
            string sqltext = @"delete from major where MajorName=@majorName";

            int affectLine = 0;
            var arguments = new List<SqlParameter>();
            foreach (string t in majorname)
            {
                SqlParameter major = new SqlParameter("@majorName", SqlDbType.NVarChar);
                arguments.Clear();
                major.Value = t;
                arguments.Add(major);
                affectLine += SqlHelper.ExecuteNonquery(sqltext, arguments.ToArray());
            }

            return affectLine;
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值