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

时间:2016-11-08 11:37:34

标签: c# asp.net-mvc

如果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并仍然有效吗?

1 个答案:

答案 0 :(得分:0)

正如@Stephen Muecke所说,您必须使用ToList()AsEnumerable()来实现该集合。如果你不想收集这些收藏品,它就不会马上开始运作。这就是你得到这个错误的原因。所以它应该是;

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

希望有所帮助,