2012-04-04 73 views
0

在控制器中,可以使用try-catch塊處理創建/編輯ActionResult錯誤,並在視圖上顯示錯誤(通過ModelState.AddModelError)。ASP .NET MVC 3 - 處理ActionResult中發生的錯誤DeleteConfirmed

現在我正在嘗試類似於DeleteConfirmed ActionResult的東西,但在視圖頁面上沒有出現錯誤。我試圖從中刪除的表應該抱怨刪除外鍵字段值。

我應該改變RedirectToAction還是添加別的東西?

[HttpPost, ActionName("Delete")] 
     public ActionResult DeleteConfirmed(int id) 
     { 
      try 
      { 
       StatusList statuslist = db.Status.Find(id); 
       db.Status.Remove(statuslist); 
       db.SaveChanges(); 
      } 
      catch (DataException dex) 
      { 
       ModelState.AddModelError("", dex.Message); 
       return RedirectToAction("Delete"); 

      } 
       return RedirectToAction("Index"); 

     } 
+1

你是什麼意思「沒有出現錯誤」?是否拋出異常? – 2012-04-04 18:16:20

+0

@ChristoferEliasson - 問題已被解決。 – 2012-04-04 18:21:41

+0

可能其他兩個操作方法具有處理消息顯示結果傳遞到視圖後的JavaScript? – bevacqua 2012-04-04 18:33:08

回答

1

如果你做了重定向,你失去了ModelState。 所以你可以做兩件事情。

  1. 設置在TempData [「myerrorkey」] = dex.Message的錯誤信息,所以該消息將「生存」爲一個重定向
  2. 改變你的方法,並在錯誤的情況下,返回一個視圖,以便在重定向期間模型狀態沒有被消除

我個人會選擇第一個。因此您可以考慮在刪除情況下實施TempData,以便在索引頁中告訴用戶一切順利。