2012-04-26 16 views
0

我有以下文章編輯操作方法,其中包括[綁定]列表來限制,該模型粘結劑將綁定的屬性: -如何從數據庫中檢索我的操作方法中的對象屬性值?

[HttpPost] 
public ActionResult Edit(Bind(Include="Note,DoctorID,VisitID,StatusID")] Visit visit) 
     { 
if ((visit.EditableByAssingedDoctor(User.Identity.Name)) || (visit.EditableByCreatedBy(User.Identity.Name))) 
      { try 
       {if (ModelState.IsValid) 
        { entities.Entry(visit).State = EntityState.Modified; 
         repository.Save(); 
         return RedirectToAction("Index"); } } 
catch (DbUpdateConcurrencyException ex) 
       { var entry = ex.Entries.Single(); 
        var clientValues = (Visit)entry.Entity; 
//code goes here 

但由於訪問對象包含不包含在其他性能綁定列表,,所以我可以從數據庫中檢索訪問對象屬性的當前值。提示: - 我正在使用實體框架和數據庫優先方法。 BR

更新: - 這裏是GET編輯操作方法: -

public ActionResult Edit(int id) 
     { 


      Visit visit = repository.GetVisit(id); 
      if ((visit.EditableByAssingedDoctor(User.Identity.Name)) || (visit.EditableByCreatedBy(User.Identity.Name))) 
      { 

       ViewBag.DoctorID = new SelectList(Membership.GetAllUsers(), "Username", "Username", visit.DoctorID); 
       ViewBag.StatusID = new SelectList(repository.FindAllVisitStatus(), "StatusID", "Description", visit.StatusID); 

       return View(visit); 
      } 
      else { return View("NotFound");} 
      } 
+0

我提供HTTPGET操作方法.. – 2012-04-26 19:29:33

+0

關於VisitID它已經包含在綁定列表中。 – 2012-04-26 19:34:48

+0

優秀!那麼,在你的post方法中,只需執行repository.GetVisit(visit.VisitId)並在更新之前執行相同的檢查以查看它是否可編輯。 – brightgarden 2012-04-26 19:39:15

回答

0

它看起來像只說明是可編輯的,除了有時狀態爲可編輯的呢?基於your other related question。因爲我不知道你的HTTPGet方法是什麼樣的,所以我在這邊出去了,而且我在EF裏生鏽了。

我不包括必要的檢查,try/catch語句,等等

var dbVisit = repository.GetVisit(visit.VisitId); 
dbVisit.Note = visit.Note; // if this is permissible 
if (dbVisit.IsEditable(...)){ 
    ... whatever is permissible here ... 
} 
repository.UpdateVisit(dbVisit); // possibly inside the if clause above 
... etc ... 
+0

我提供HTTPGet操作方法..關於你的方法,我認爲它不會引發DbUpdateConcurrencyException異常來檢查任何併發訪問,因爲如果時間戳值發生了變化,引發DbUpdateConcurrencyException - 需要將對象作爲參數傳遞到action方法,而不是通過使用對象ID獲取對象。 – 2012-04-26 19:29:24

相關問題