这是我的代码
模型
public class ViewModelRequestPurchaseItem
{
public List<RequestPurchase> RequestPurchases { get; set; }
public List<RequestPurchaseItem> RequestPurchaseItems { get; set; }
}
查看
@using EFMySQLCardTest.Models
@model EFMySQLCardTest.Models.ViewModelRequestPurchaseItem
控制器
public ActionResult Edit([Bind(Include = "RequestPurchases,RequestPurchaseItems")] ViewModelRequestPurchaseItem viewModelRequestPurchaseItem, string id)
{
var requestPurchase = db.RequestPurchase.Where(x => x.RequestPurchaseNumber == id).ToList();
var requestPurchaseItem = db.RequestPurchaseItem.Where(x => x.RequestPurchaseNumber == id).OrderBy(x => x.RequestPurchaseItemID).ToList();
viewModelRequestPurchaseItem.RequestPurchases = requestPurchase;
viewModelRequestPurchaseItem.RequestPurchaseItems = requestPurchaseItem;
if (ModelState.IsValid)
{
db.Entry(viewModelRequestPurchaseItem).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
else
{
this.ExpendErrors();
}
return View(viewModelRequestPurchaseItem);
}
在这一行:
db.Entry(viewModelRequestPurchaseItem).State = EntityState.Modified
错误是:
viewModelRequestPurchaseItem不是部件模型
答案 0 :(得分:1)
ViewModelRequestPurchaseItem
是您的视图模型,不属于数据库上下文。您需要在集合中保存每个RequestPurchase
和RequestPurchaseItems
。您当前的代码还将集合分配给数据库中的当前值,从而消除了您在视图中所做的任何编辑。你的方法应该是
public ActionResult Edit(ViewModelRequestPurchaseItem model)
{
if (ModelState.IsValid)
{
return View(model);
}
foreach (RequestPurchase item in model.RequestPurchases)
{
db.Entry(item).State = EntityState.Modified;
}
// ditto for RequestPurchaseItems
db.SaveChanges();
return RedirectToAction("Index");
}