2012-04-27 5 views
1

私はMVC3とEF4.1を勉強しています。私は現在、データベースの最初のEFと、新しいTT4ジェネレータを使ってリーンデータクラスを生成することを実験しています。私はCRUDコントローラを生成しており、ビューにDB制約メッセージをどのように表示するのが最適かという問題に遭遇しました。"Delete"がDBの制約に当たるとDBエラーメッセージを表示する最も良い方法

私のコードは、これまでのところです:

[HttpPost] 
    public ActionResult Delete(Guid id, aspnet_Users User) 
    { 
     string errorMessage = string.Empty; 
     try 
     { 
      // TODO: Add delete logic here 
      db.Entry(User).State = System.Data.EntityState.Deleted; 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
     catch(Exception err) 
     { 
      return Content(err.InnerException.StackTrace); 
      //return View(); 
     } 
    } 

すべてのヘルプは大歓迎します。

エド

答えて

2

行うための最も簡単なことの一つは、例外メッセージとモデル誤差を追加しています。これは基本的に、制約違反を検証エラーとして扱います。ただし、おそらくユーザーのメッセージをカスタマイズする必要があります。

[HttpPost] 
public ActionResult Delete(Guid id, aspnet_Users User) 
{ 
    try 
    { 
     // TODO: Add delete logic here 
     db.Entry(User).State = System.Data.EntityState.Deleted; 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 
    catch(Exception err) 
    { 
     ModelState.AddModelError(String.Empty, err.Message); 
     return View(User); 
    } 
} 
+0

まずは非常に迅速な対応に感謝します。私はビューにいくつかのコードを追加しました: "

@Html.ValidationSummary(true)
"これは、 "エントリを更新する際にエラーが発生しました。詳細については内部例外を参照してください。しかし、私はこれ以上必要です。思考?再度、感謝します。 – EdB

+0

これは、カスタムメッセージが再生される場所です。例外を検査し、それに応じてメッセージを更新する必要があります。 – jrummell

+0

[OK]を、ちょうどこれを1つ働いた。私は追加しました:catch(Exception err) { ModelState.AddModelError(String.Empty、err.InnerException.InnerException.Message); 戻るビュー(ユーザー); } – EdB

関連する問題