如何在没有实体框架的情况下使用asp.net Mvc中的复选框删除多条记录

问题描述 投票:0回答:2

我正在与asp.net mvc一起使用,并且试图使用Ckeckbox删除多个记录,但是当我选择记录并单击Delete按钮时,它的ID为Null。请给我建议一些解决方案

  1. 以下是我的索引视图

    <h2>Index</h2>
    <input type="button" id="Delete"
           value="Delete Selected Employee" />
    
    <p>
        @Html.ActionLink("Create New", "Create")
    </p>
    @using (Html.BeginForm("BatchDelete", "Employee", FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
        <table class="table">
            <tr>
                <th><input type="checkbox" id="checkAll" "All"</th>
                <th>
                    @Html.DisplayNameFor(Model => Model.Id)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.FirstName)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.LastName)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.Gender)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.DOB)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.Hobby)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.Photo)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.City)
    
                </th>
                <th></th>
            </tr>
    
            @foreach (var item in Model)
            {
                <tr>
                    <td>
                        <input type="checkbox" class="checkBox"
                               value="@item.Id" />
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.Id)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.FirstName)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.LastName)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.Gender)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.DOB)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.Hobby)
                    </td>
                    <td>
                        <img width="50" height="50" src="@item.Photo" />
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.City)
                    </td>
                    <td>
                        @Html.ActionLink("Edit", "Edit", new { id = item.Id }) |
                        @Html.ActionLink("Detail", "Detail", new { id = item.Id }) |
                        @Html.ActionLink("Delete", "Delete", new { id = item.Id })
                    </td>
                </tr>
            }
        </table>
        <script>
            $(document).ready(function () {
    
                $("#checkAll").click(function () {
                    $(".checkBox").prop('checked',
                        $(this).prop('checked'));
                });
    
                $("#Delete").click(function () {
                    var selectedIDs = new Array();
                    $('input:checkbox.checkBox').each(function () {
                        if ($(this).prop('checked')) {
                            selectedIDs.push($(this).val());
                        }
                    });
    
                    var options = {};
                    options.url = "/Employee/Delete";
                    options.type = "POST";
                    options.data = JSON.stringify(selectedIDs);
                    options.contentType = "application/json";
                    options.dataType = "json";
                    options.success = function (msg) {
                        alert(msg);
                    };
                    options.error = function () {
                        alert("Error while deleting the records!");
                    };
                    $.ajax(options);
    
                });
            });
        </script>
    
    }
    

当我运行项目msg时:“删除记录时出错!”显示

  1. 以下是我的控制器,用于“删除”操作

    [HttpGet]
            public ActionResult Delete(int? Id)
            {
                if (Id == null)
                {
                    return View();
                }
                Employee emp = objemployee.GetEmployeeData(Id);
                if (emp == null)
                {
                    return View();
                }
                return View(emp);
            }
    
            [HttpPost, ActionName("Delete")]
            public ActionResult DeleteConfirmed(int? Id)
            {
                objemployee.DeleteEmployee(Id);
                return RedirectToAction("Index");
            }
    
c# json ajax asp.net-mvc
2个回答
0
投票

发送参数数组,但动作参数即将传入...

 [HttpGet]
    public ActionResult Delete(int[] selectedIDs)
    {
        if (Id == null)
        {
            return View();
        }
        Employee emp = objemployee.GetEmployeeData(Id);
        if (emp == null)
        {
            return View();
        }
        return View(emp);
    }

0
投票

输入参数应为字符串示例id:'1,2,3',并且您必须将该字符串参数传递给存储过程,而sp本身应将逗号分隔的字符串存储到临时表或表变量中,并使用sql查询执行删除。

控制器:

 public ActionResult Delete(string selectedIDs)
        {
            if (selectedIDs == null)
            {
                return View();
            }
            Employee emp = objemployee.GetEmployeeData(selectedIDs);
            if (emp == null)
            {
                return View();
            }
            return View(emp);
        }

在JS端:

options.data = { selectedIDs: selectedIDs.toString()};
© www.soinside.com 2019 - 2024. All rights reserved.