在ASP.NET MVC中,可以通过以下步骤实现单表级联删除:
public class ProductController : Controller
{
private readonly ApplicationDbContext _context;
public ProductController(ApplicationDbContext context)
{
_context = context;
}
// GET: Product
public ActionResult Index()
{
var products = _context.Products.ToList();
return View(products);
}
// GET: Product/Delete/5
public ActionResult Delete(int id)
{
var product = _context.Products.Find(id);
if (product == null)
{
return HttpNotFound();
}
return View(product);
}
// POST: Product/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
// 查找要删除的产品
var product = _context.Products.Find(id);
// 删除与产品相关的相关实体
// 这里假设有一个"Order"实体类,它与产品相关联
var orders = _context.Orders.Where(o => o.ProductId == product.Id);
_context.Orders.RemoveRange(orders);
// 删除产品
_context.Products.Remove(product);
// 保存更改
_context.SaveChanges();
return RedirectToAction("Index");
}
}
@model YourProjectName.Models.Product
@{
ViewBag.Title = "Delete";
Layout = "~/Views/Shared/_Layout.cshtml";
}
Delete
Are you sure you want to delete this product?
Product
-
@Html.DisplayNameFor(model => model.Name)
-
@Html.DisplayFor(model => model.Name)
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
|
@Html.ActionLink("Back to List", "Index")
}
这样,当用户点击删除按钮时,将会执行"DeleteConfirmed"方法,该方法会删除与产品相关联的任何实体,并最终删除产品自身。
上一篇:ASP.NET MVC - 从控制器操作流式传输视频
下一篇:ASP.NET MVC - 当将动态ExpandoObject从Controller传递到View时出现RuntimeBinderException