gpt4 book ai didi

c# - 如何删除 MVC 中的多个列表项?

转载 作者:行者123 更新时间:2023-11-30 22:11:17 26 4
gpt4 key购买 nike

我想先用 EF 数据库制作一个 MVC4 应用程序,这是我 2 天前才开始自学的。我面临的问题是我有一个客户列表,其中有一个值为 true 或 false 的属性“IsDeleted”。

基本上,我想通过单击链接或按钮同时删除其属性 IsDeleted 标记为 true 的所有客户。

到目前为止,我已经尝试过这些,但似乎我对它是如何工作的还是有点模糊:

在我的 CustomerController 中,我添加了这些代码:

        public ActionResult DeleteAll()
{
List<Customer> cusList = new List<Customer>();
IEnumerable<Customer> customerList = db.Customers.ToList().Where(i => i.IsDeleted == true);
foreach (var Item in customerList) { cusList.Add(Item); }
return View(customerList);
}

[HttpPost, ActionName("DeleteAll")]
[ValidateAntiForgeryToken]
public ActionResult DeleteAllConfirmed()
{
List<Customer> cusList = new List<Customer>();
IEnumerable<Customer> customerList = db.Customers.ToList().Where(i => i.IsDeleted == true);
foreach (var Item in customerList) { cusList.Add(Item); }
foreach (var item in cusList) { db.Customers.Remove(item); }
return RedirectToAction("Index");
}

所以我有点不确定下一步该去哪里,或者即使这是一种可行的方法。如果可行,如何在 View 中调用此操作?

任何想法将不胜感激。

最好的问候,

最佳答案

您的 post 方法中有一些冗余代码。您正在查询数据库并获得所需的结果。这些实体依次被放入一个列表中,之后您将遍历它们以删除它们。此外,您忘记告诉您的上下文以保存更改。你可以通过缩短这个来节省一些时间、内存和 cpu 周期:

[HttpPost, ActionName("DeleteAll")]
[ValidateAntiForgeryToken]
public ActionResult DeleteAllConfirmed()
{
IEnumerable<Customer> customerList = db.Customers.Where(i => i.IsDeleted == true);
//Now you have everything you need.
foreach (var Item in customerList)
{
//Remove
db.Customers.Remove(Item);
}
//and save. done
db.SaveChanges(); //important!
return RedirectToAction("Index");
}

您的DeleteAll() 方法也有一些缺陷。您正在向您的 cusList 添加项目,但您从未使用过它!

public ActionResult DeleteAll()
{
IEnumerable<Customer> customerList = db.Customers.Where(i => i.IsDeleted == true);
return View(customerList);
}

如果您愿意,可以将其缩减为一行:

public ActionResult DeleteAll()
{
return View(db.Customers.Where(i => i.IsDeleted == true));
}

我还不太确定您所说的如何在 View 中调用它是什么意思。

关于c# - 如何删除 MVC 中的多个列表项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20310732/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com