ASP.Net MVC 3アプリケーションでエラー処理方法を実装しています。私はIExceptionFilterなどを実装する属性を記述しました。これは正しく機能し、例外を処理するとactionメソッドをスローし、JSONとして直列化された例外情報を返します。ASP.NET MVC 3からのUpdateModelの動作を強制するアクションメソッドパラメータのデフォルトモデルバインダー
この属性を使用して、データをアクションメソッドに渡すときにモデルバインダーで検出された検証エラーも処理したいと考えています。たとえば、ActionメソッドのパラメータとしてデシリアライズされたActionメソッドにオブジェクトをPOSTすると、UpdateModelのように検証エラーが発生した場合に例外がスローされます。現在のデフォルトのモデルバインダーは、TryUpdateModelのように動作するように見えますが、例外をスローするのではなくModelState.IsValidを反転するだけです。
[ActionExceptionJsonHandler]
public ActionResult CreateSomething(SomethingViewData account)
{
// If model binding fails validation an exception should be thrown and no code is executed here
// Do stuff here
}
のUpdateModelが、その後IExceptionFilterはそれをキャッチして、クライアントに検証エラーを返す扱うでしょうないように、デフォルトのモデルバインダーは、同じように例外をスローした場合。それがなければ、開発者はにModelStateをチェックするコードを記述しなければならないなど
私は2つの関連の質問があるので、一番下の行:
- は、検証が失敗したときに、デフォルトのモデルバインダーが例外をスロー持つ方法はありますか?
- このアプローチを使用することについての考えと、各アクションメソッドでModelStateを手動でチェックすることについての考えはありますか?
ありがとうございます。