Как можно удалить несколько записей с помощью CheckBox In asp. net Mvc без Entity Framework - PullRequest
0 голосов
/ 27 января 2020

я работаю с asp. net mvc, и я пытаюсь удалить несколько записей с помощью Ckeckbox, но когда я выбираю запись и нажимаю кнопку «Удалить», она принимает 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 проекта: «Ошибка при удалении записей! " show

  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");
            }
    

Ответы [ 3 ]

0 голосов
/ 27 января 2020

Входным параметром должен быть строковый пример с идентификаторами: '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()};
0 голосов
/ 28 января 2020

Я получил свою ошибку, выполните следующие действия в контроллере Delet Aaction

 [HttpPost, ActionName("Delete")]
        public ActionResult DeleteConfirmed(int? Id, int[] selectedIDs)
        {
            if(Id>0)
            {
                objemployee.DeleteEmployee(Id);

            }
            else
            {
                foreach(int item in selectedIDs)
                {
                    objemployee.DeleteEmployee(item);
                }
            }
            return RedirectToAction("Index");
        } 
0 голосов
/ 27 января 2020

Отправка массива параметров, но поступающий параметр действия int ...

 [HttpGet]
    public ActionResult Delete(int[] selectedIDs)
    {
        if (Id == null)
        {
            return View();
        }
        Employee emp = objemployee.GetEmployeeData(Id);
        if (emp == null)
        {
            return View();
        }
        return View(emp);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...