2012-09-28 69 views
1

我試圖實施該解決方案found here,而是爲了保護/保護某些領域,一旦我代替我的「用戶」類與「EditUserViewModel」級(即具有小於字段中的一個該用戶類),並一旦我此行我想在一個視圖模型

db.Entry(users).State = EntityState.Modified; 

在此代碼

[HttpPost] 
    public ActionResult Edit(EditUserViewModel users) 
    { 
     if (ModelState.IsValid) 
     { 
      db.Entry(users).State = EntityState.Modified; 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
     return View(users); 
    } 

我得到的錯誤

The entity type EditUserViewModel is not part of the model for the current context. 

現在,我猜這個錯誤,因爲我的DbContext使用用戶類,而不是EditUserViewModel類。我是否錯過了一個步驟,或者有什麼方法可以解決這個問題嗎?

+0

您可以發佈'EditUserViewModel'和'User'類嗎? – Omar

+0

@Omar張貼類 –

+0

如果我正確地讀這篇文章,你缺少新的視圖模型和相應的域模型之間的映射。您的業​​務層可能無法(通常不應該)知道如何直接持久化視圖模型。 –

回答

1

您需要從MV中的數據合併到模型類。

if (ModelState.IsValid) 
{ 
    var existingUser = db.Users.Single(p => /* query to find your user */); 

    existingUser.From = user.From; 
    existingUser.CC = user.CC; 
    // etc. 

    db.SaveChanges(); 

    return RedirectToAction("Index"); 
} 
+0

謝謝!這是我正在尋找的解決方案。 –

相關問題