牛骨文教育服务平台(让学习变的简单)
博文笔记

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

创建时间:2016-11-18 投稿人: 浏览次数:429

问题描述:
这里写图片描述
在上图复选框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;
        }
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。