2012-10-30 50 views
1

我在MVC4 web應用程序中使用SimpleMembership。我無法弄清楚如何編輯個人資料信息。我想我可以像做任何其他表一樣做。在SimpleMembership中編輯用戶配置文件數據

 [HttpPost] 
     public ActionResult EditUser(UserProfile user) 
     { 
      if (ModelState.IsValid) 
      { 
       udb.Entry(user).State = EntityState.Modified; 
       udb.SaveChanges(); 
       return RedirectToAction("Index"); 
      } 

但我得到一個錯誤,說當前上下文中不存在實體狀態。我的上下文在控制器的頂部定義如下。

private UsersContext udb = new UsersContext(); 

我可以找到大量的參考文獻上訪問配置文件數據,但沒有爲編輯數據。如何將編輯後的UserProfile數據保存回db?

編輯:我能解決entityState錯誤 - 我不得不包括system.data和system.data.entity。但是現在,當我運行時,我得到一個編輯錯誤,它表示修改後的意外行數(0)。並指向udb.SaveChanges()行。仍然無法弄清楚如何修改UserProfile數據元素。

回答

0

簡單的答案。我需要在我的視圖中爲模型設置所有字段。我只允許用戶改變6中的4個,所以沒有設置兩個。

我認爲當你將模型傳遞給視圖時,視圖會將相同的字段值傳遞給動作,如果它們沒有在視圖中設置的話。例如:如果我在視圖中設置了名字而不是用戶名,則發送到視圖的原始用戶名將被傳遞給模型。這似乎並非如此。對於模型中的所有項目,我不允許它們在視圖中進行更改,我必須設置隱藏字段來設置字段,以便發送完整模型。

設置單個字段可能會更好,但我不確定如何去做,但這不是問題。

相關問題