1

EDITページがあり、ユーザーが同じ名前を入力してページを送信すると、例外が発生してキャッチされます。しかし、モデルエラーを表示するために編集ページにリダイレクトされず、代わりに例外の詳細を含むasp.net黄色のエラーページが表示されます。コントローラーのOnExceptionにコードがまだなく、開発マシンでこれが表示されます。

try
{
 //code
}
catch (Exception ex)
{                
   ModelState.AddModelError(string.Empty, "Customer with same name already exists.");
}

return RedirectToAction("Edit", new {id=model.id}); <--not executing
4

3 に答える 3

1

AddModelError..thenのKeyとして'String.Empty'を渡すと、ビューに..が表示されます。

に存在するエラーメッセージ

<%: Html.ValidationSummary() %>

または「名前」をキーとして指定する場合は、

ModelState.AddModelError(Name, "Customer with same name already exists.");  

<%=Html.TextBox("Name") %> <br /> 
<%=Html.ValidationMessage("Name") %>
于 2012-09-07T21:11:46.433 に答える
0

アクションメソッドに追加する検証エラーメッセージをビューに表示する場合は、モデルをビューに戻す必要があります。保存が正常に完了したら、GETアクションにリダイレクトします。

[HttpPost]
public ActionResult CreateUser(UserViewModel model)
{
  try
  {
     //Save and Redirect to GET action (PRG pattern)
     //Assuming model.ID will have the Id of record.

    return RedirectToAction("View",new {id=model.ID });
  }
  catch(Exception ex)
  {
    //Log error 
    ModelState.AddModelError("","Some error message");
  }
  return View(model);
}
于 2012-09-07T20:51:27.217 に答える
0

Yahooo !! 私は何が問題なのかを理解しました。実際、私はtrans.commitを実行していましたが、失敗した場合は、catchブロックでロールバックを実行していません。助けてくれてありがとう。

于 2012-09-07T22:29:10.523 に答える