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

    xiaoxiao2021-11-25  35

    问题描述: 在上图复选框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; }
    转载请注明原文地址: https://ju.6miu.com/read-678512.html

    最新回复(0)