如果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
并仍然有效吗?
答案 0 :(得分:0)
正如@Stephen Muecke所说,您必须使用ToList()
或AsEnumerable()
来实现该集合。如果你不想收集这些收藏品,它就不会马上开始运作。这就是你得到这个错误的原因。所以它应该是;
productVM.Categories = new SelectList(db.Categories.ToList(), "Id", "Name");
希望有所帮助,