2

私は自分のc#MVCアプリケーションですべての例外を処理しようとしています。すべてのコントローラーはBaseControllerを継承しているので、OnException()をオーバーライドできると思いprotected override void OnException(ExceptionContext filterContext)ました。ただし、エラーページにリダイレクトしたくないので、リクエストの元のページに戻って、その状態を維持します。したがって、ユーザーが入力を入力したフォームがある場合、例外を処理した後、ユーザーが入力した情報を入力したフォームを表示したいと思います。

注:すべてのビューが強く型付けされているわけではありません。

例:

USER:myuser <-入力タグに入力されたテキスト

例外を処理した後、例外メッセージを表示している前のビューに戻りたいと思います。

USER:myuser <-入力タグに入力されたテキスト 私の例外メッセージ

4

1 に答える 1

2

検証は未処理の例外として扱われるべきではありません!Model Validation in ASP.NET MVCこのシナリオを処理するには、についてお読みください。

未処理の例外は、その名前が示すように、例外的な場合にのみ発生するものです。例外的なケースは、それが発生したときにアプリケーションがリクエストを処理できない場合です。したがって、未処理の例外が発生したときに状態がないため、既知の状態にリダイレクトすることは意味がありません。この場合にできる最善の方法は、さらに分析するために例外をログに記録し、ユーザーを500エラーページにリダイレクトして、問題が発生したことを通知することです。

結論:

  • モデル検証を使用して検証ロジックを処理する
  • 未処理の例外にはOnExceptionを使用します。
于 2012-12-06T12:51:08.653 に答える