2011-05-02 2 views

답변

7

하나의 일반적인 방법은 사용자 정의 예외 필터를 작성하는 것입니다. 그런 다음 몇 가지 작업을 쿼리하면됩니다.

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

이 예외가 모든 예외에 대해 실행되지 않습니까? – Dashu

+0

@ 대쉬, 모든 예외에 대해 예. 요청이 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 
     }; 
    } 
} 

:이 작업을 수행하는

관련 문제