c# - 如何在没有实体框架的 asp.net Mvc 中使用 CheckBox 删除多条记录
问题描述
我正在使用 asp.net mvc 并尝试使用 Ckeckbox 删除多条记录,但是当我选择记录并单击 Delete 按钮时,它需要 Id=Null 。请给我一些解决方案
以下是我的索引视图
<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> }
当我运行项目消息时:“删除记录时出错!” 节目
以下是我的删除操作控制器
[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"); }
解决方案
输入参数应该是字符串示例 ids:'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()};
推荐阅读
- swift - 在 swift 中使用 OCR 扫描发票
- html - 间距不会产生边距
- python - 张量流中的 output_data[output_ids == i] = input_data[input_ids == i]
- wordpress - 链接 rel='preload' 给出 404 错误,但文件在那里
- django - Django REST 框架 - 要求 BooleanField 为真
- recursion - 如果函数仅取决于一个参数,如何递归执行
- excel - 如何以更快的方式遍历合并的单元格
- java - 如何使方面在方法 AService.methodB() 上工作?
- javascript - redux connect mapStateToProps not called when action is dispatched
- postgresql - PostgreSQL 和 pgAdmin 都在 Docker 容器中运行并连接