0
我似乎無法將Employees.cshtml視圖中的複選框傳遞給Delete Post操作方法的員工ID值。 delete action方法返回Delete.cshtml視圖,該視圖呈現Employees.cshtml,因爲它位於Shared文件夾下的EditorTemplates文件夾中。當我點擊提交時,我似乎無法通過IEnumerable的checked @ Model.Ids。如何通過嵌套視圖建模從視圖到控制器
我想要做的是刪除已在Employees.cshtml中導出選中的值的所有項。
很明顯,問題是模型綁定(我認爲)將從Delete.cshtml頁面的按鈕提交完成,我該如何改變?
Delete操作方法。
[HttpGet]
public ActionResult Delete()
{
return View(db2.Employees.ToList());
}
Delete Post操作方法。
[HttpPost]
public ActionResult Delete(IEnumerable<int> EmployeeIDToDelete)
{
if (EmployeeIDToDelete != null)
{
var employeesToDelete = db2.Employees.Where(x => EmployeeIDToDelete.Contains(x.Id)).ToList();
foreach (var item in employeesToDelete)
{
db2.Employees.Remove(item);
}
db2.SaveChanges();
RedirectToAction("Delete");
}
return View(db2.Employees.ToList());
}
我刪除視圖
@model IEnumerable<MVC_Example2___ADO.Models.Employees>
@{
ViewBag.Title = "Delete";
}
<html>
<body>
@using (Html.BeginForm())
{
<table align="center">
<thead>
<tr>
<td>Check</td>
<td>Photo</td>
<td>Name</td>
<td>Gender</td>
</tr>
</thead>
<tbody>
@Html.EditorForModel()
</tbody>
</table>
<input type="submit" name="submit" value="Delete Entries" />
}
</body>
</html>
我的員工查看
@model MVC_Example2___ADO.Models.Employees
<tr>
<td><input type="checkbox" name="employeeIdsToDelete" id="employeeIdsToDelete" value="@Model.Id" /></td>
<td>@Html.Image(@Model.Photo, @Model.AlternateText, 125, 130)</td>
<td>@Model.FullName</td>
<td>@Model.Gender</td>
</tr>
由於控制器操作的參數是一個IEnumerable,我相信他也需要索引他的名字屬性。 – Tobias
@Tobias,它不需要值類型。 'DefaultModelBinder'仍然會綁定它。但是,一如往常,首選的方法是使用'bool IsSelected'屬性和'@CheckBoxFor(m => m.IsSelected)'使用'' –
@Stephen Muecke當然是!非常感謝你! –