我正在与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>
}
当我运行项目msg时:“删除记录时出错!”显示
以下是我的控制器,用于“删除”操作
[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");
}
发送参数数组,但动作参数即将传入...
[HttpGet]
public ActionResult Delete(int[] selectedIDs)
{
if (Id == null)
{
return View();
}
Employee emp = objemployee.GetEmployeeData(Id);
if (emp == null)
{
return View();
}
return View(emp);
}
输入参数应为字符串示例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()};