2

次の状況を考慮してください。

一元化されたExceptionLoggingにELMAHを利用するASP.NETMVCアプリケーションがあります。コントローラは、特定のタイプの例外をキャッチし、ユーザーにビューを表示するためにHandlerError属性でマークされています。例えば

[HandleError(ExceptionType = typeof(ModelSpecificException), View = "Exceptions/ModelSpecific")]
public partial class HeavyController : Controller
{
  // Constructors and ActionResults are following here...
}

これはこれまでのところ期待どおりに機能しています。私が今直面している問題は、「ModelSpecific」エラーページがViewData内にいくつかのオブジェクトを必要としていることです。次のタイプのViewPageのViewDataディクショナリにデータを入力するためのヒントはありますか?

System.Web.Mvc.ViewPage<HandleErrorInfo>

私の頭に浮かぶもう1つのアイデアは、それぞれのActionResultsを使用したErrorHandlingにコントローラーを使用できる可能性があるということです。しかし、現在、私はそれを達成する方法についての手がかりを持っていません。

どんな助けでも大歓迎です...

よろしくお願いします、

ゴードン

4

1 に答える 1

0

例外クラスとビューはどちらもモデル固有であるため、必要な追加データを例外自体に格納できますか?

if(badCondition)
{
    throw new ModelSpecificException("a bad thing happened", extraData);
}

ビューでは、Server.GetLastError()を介して例外を取得し、それを正しいタイプにキャストして、プロパティを介して追加のデータにアクセスできます。これは、例外をモデルとして扱い、ViewDataコレクションからユーザーを遠ざけるため、よりクリーンなアプローチになる可能性があります。

于 2010-01-14T16:22:50.743 に答える