カスタム例外を作成しました。私のアプリケーションが「例外的な状態」にあるとみなすたびに、このクラスのインスタンスを投げています。この例外は、アプリケーションロジッククラス(私の場合はサービス)でスローされています。 これで、デフォルトのASP MVC例外リダイレクトも実行されていますが、これらのカスタム例外の場合、「エラー」ページにリダイレクトするのではなく、divにメッセージを表示することができます私のLayout.cshtmlページ)。私はTempData ["ApplicationError"]に例外メッセージを追加することを考えていました。 このコードはコントローラのアクションメソッド全体ではなく、一度だけ記述します。だから、私のベースのコントローラクラスで私は保護された無効onExceptionを(ExceptionContext filterContext)を上書きし、私のコードは次のようになります。ASP MVCに表示されるカスタム例外メッセージ
protected override void OnException(ExceptionContext filterContext)
{
if (filterContext.Exception is InvalidOperationException)
TempData["ApplicationError"] = filterContext.Exception.Message;
else
base.OnException(filterContext);
}
私の問題は、この例外がスローされたとき、私はまだデフォルトのエラーページにリダイレクトしてしまうことがあります。私はこれが起こらないようにします。私が欲しいのは、ユーザーがいる同じビューのフレンドリーなdivにカスタム例外のメッセージを表示することです。どのように私はこれを達成することができますか?
ありがとうございました。このアプローチの私の問題は、この例外をスローするすべてのメソッドでtry-cacth-AddErrorをコピー/ペーストする必要があることです。私はこれを望んでいない。私はいつもこれを処理するための中央(インフラストラクチャー)のようなものが必要です。ほとんどの場合、ビュー関連のデータをバックアップするビューモデルはありません。 –
強く型付けされたビューを提供するので、ViewModelを持つ方が良いアイデアです。 – Shyju
今はVMを必要としません。特に自分の問題に取り組んでいるような場合は特にそうです。 –