2011-05-02 6 views

答えて

7

一般的な方法の1つは、カスタム例外フィルタを書くことです。そして、単に何らかのアクションを照会してください:

$.getJSON('/someController/someAction', function (result) { 
    if (!result.success) { 
     alert(result.error); 
    } else { 
     // handle the success 
    } 
}); 
+0

これはすべての例外に対して実行されませんか? – Dashu

+0

@Dashu、すべての例外に対してはい。また、リクエストがAJAXリクエストであったかどうか、リクエストのコンテンツタイプがapplication/jsonかどうかをテストし、この場合にのみ例外を処理することもできます。 –

+0

良いソリューションのように見える、ありがとうダーリン! – Dashu

0

これはおそらくカスタム属性...おそらくHandleErrorAttributeのサブクラスで実行可能です。このトリックは、コントローラアクションがJSONを返すかどうかを知る方法です。これは、GetCustomerDetailsJsonのようなメソッド名の後に続くように簡単にすることができます。 Global.asaxの中にグローバルフィルタとして登録することができ

public class MyErrorHandlerAttribute : FilterAttribute, IExceptionFilter 
{ 
    public void OnException(ExceptionContext filterContext) 
    { 
     filterContext.ExceptionHandled = true; 
     filterContext.Result = new JsonResult 
     { 
      Data = new { success = false, error = filterContext.Exception.ToString() }, 
      JsonRequestBehavior = JsonRequestBehavior.AllowGet 
     }; 
    } 
} 

:これを行うには

関連する問題