使用DbContext和带模型返回视图的问题

本文关键字:视图 问题 返回 模型 DbContext 使用 | 更新日期: 2023-09-27 18:16:52

我需要从数据库中获取一些东西,并返回模型,如果ModelState无效,但我似乎无法使用using,我想。

下面的代码可以运行:

[HttpPost]
        public ActionResult EditProduct(ProductVM productVM, HttpPostedFileBase file)
        {
            // Check model state
            if (!ModelState.IsValid)
            {
                Db db = new Db();
                productVM.Categories = new SelectList(db.Categories, "Id", "Name");
                return View(productVM);
            }
            return View(productVM);
        }

这段代码抛出以下错误:

The operation cannot be completed because the DbContext has been disposed.
[HttpPost]
public ActionResult EditProduct(ProductVM productVM, HttpPostedFileBase file)
{
    // Check model state
    if (!ModelState.IsValid)
    {
        using (Db db = new Db())
        {
            //Db db = new Db();
            productVM.Categories = new SelectList(db.Categories, "Id", "Name");
        }
        return View(productVM);
    }
    return View(productVM);
}

我能以某种方式使用using,仍然有它的工作?

使用DbContext和带模型返回视图的问题

正如@Stephen Muecke所说,您必须使用ToList()AsEnumerable()实现集合。如果不枚举集合,则它不会立即运行。这就是为什么你会得到那个错误。所以应该是;

productVM.Categories = new SelectList(db.Categories.ToList(), "Id", "Name");

希望帮助,