2015-09-10 32 views
-1

这是我的代码如何编辑两个模型在一个视图中EntityFramework.dll错误

型号

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

你不觉得错误的细节是必需的! –

+0

对不起,我真的不知道你的意思... 你能帮我翻一下吗.. – Ning

+0

什么是错误?哪一行代码会引发错误?它足够简单了解! –

回答

1

ViewModelRequestPurchaseItem是你的视图模型,而不是数据库上下文的一部分。您需要将每个RequestPurchaseRequestPurchaseItems保存在集合中。您当前的代码也将集合分配给数据库中的当前值,清除您在视图中进行的任何编辑。你的方法应该是

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"); 
} 
+0

thaks斯蒂芬Mucke ^^ 我试图编辑它 – Ning

+0

这是我的查看 和这里错误 @foreach(请求购买Model.RequestPurchases中的项目) { ​​ @ Html.DisplayFor(型号=> item.RequestPurchaseNumber) ​​ @ Html.DisplayFor(型号=> item.UserAccount) } – Ning

+0

不能使用一个'foreach'循环来为集合生成表单控件。你需要一个'for'循环或者一个自定义的'EditorTemplate'来处理你的类型。 –

相关问题