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

2016-11-18 19:24:10来源:CSDN作者:qq_34332010人点击

问题描述:
这里写图片描述
在上图复选框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;        }

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台