2012-04-04 24 views
0

コントローラでは、ActionResultの作成/編集に関するエラーをtry-catchブロックで処理できます(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

「エラーが表示されない」とはどういう意味ですか?例外は全くスローされますか? –

+0

@ChristoferEliasson - 質問が明確になりました。 –

+0

おそらく、他の2つのアクションメソッドは、結果がビューに渡されたときにメッセージの表示を処理するjavascriptを持っていますか? – bevacqua

答えて

1

リダイレクトすると、ModelStateが失われます。 これで2つのことができます。

  1. TempData [「myerrorkey」] = dex.Messageにエラーメッセージを設定すると、そのメッセージは、
  2. は、エラーの場合には、あなたの方法を変更し、1つのリダイレクトのために「生き残る」というように表示を返します。リダイレクト中にモデル状態が消去されない

個人的に私は最初を選択します。インデックスページの中で、すべてがスムーズになったことをユーザーに知らせる削除の場合には、TempDataを実装することも考えられます。

関連する問題