【发布时间】:2017-12-02 20:05:58
【问题描述】:
我尝试在 DeleteProduct 方法中从产品中删除项目,并且 Remove 方法返回 true,但所有项目仍在列表中,我不知道为什么。
据我了解,产品列表在应用程序的第一次启动时创建,并且在静态构造函数中填充了项目。然后在 DeleteProduct 方法中,其中一项删除并执行 Products 方法。
请有人解释一下!
public class ProductController
: Controller
{
private static IEnumerable<ProductViewModel> products = null;
static ProductController()
{
products = new List<ProductViewModel>
{
new ProductViewModel{Id = 0, Description = "Milk", Price = 21.0, IsAvailable = true, LastUpdate = DateTime.Now},
new ProductViewModel{Id = 1, Description = "Bread", Price = 10.10, IsAvailable = false, LastUpdate = DateTime.Now},
new ProductViewModel{Id = 2, Description = "Soure creame", Price = 34.5, IsAvailable = true, LastUpdate = DateTime.Now},
new ProductViewModel{Id = 3, Description = "Chocolate", Price = 31.0, IsAvailable = true, LastUpdate = DateTime.Now},
new ProductViewModel{Id = 4, Description = "Apples", Price = 1.0, IsAvailable = true, LastUpdate = DateTime.Now},
};
}
public ActionResult Products()
{
return View(products);
}
public ActionResult DeleteProduct(int id)
{
var product = products.FirstOrDefault(p => p.Id == id);
if (product != null)
products.ToList().Remove(product);
return RedirectToAction("Products");
}
}
【问题讨论】:
-
你所做的是糟糕的做法(不要使用
static变量),但如果你首先测试products是否为null,然后才将列表分配给它,它会起作用。 -
@StephenMuecke 我绝对不会将数据存储在静态变量中,也不会使用静态变量。只是想创建测试示例
-
@StephenMuecke 谢谢你的链接
标签: c# asp.net-mvc