요청을 Json으로하고 예외가 발생하면 결과는 json이되고 html이 아니어야하므로 전체적으로 오류를 처리하기위한 좋은 스마트 방법을 찾고 있습니다.MVC 3 json 요청은 예외가 발생하면 json 응답을 받아야합니다.
기존 솔루션 또는 내 정보를 빌드하는 방법에 대한 정보를 찾고 계십니다.
요청을 Json으로하고 예외가 발생하면 결과는 json이되고 html이 아니어야하므로 전체적으로 오류를 처리하기위한 좋은 스마트 방법을 찾고 있습니다.MVC 3 json 요청은 예외가 발생하면 json 응답을 받아야합니다.
기존 솔루션 또는 내 정보를 빌드하는 방법에 대한 정보를 찾고 계십니다.
하나의 일반적인 방법은 사용자 정의 예외 필터를 작성하는 것입니다. 그런 다음 몇 가지 작업을 쿼리하면됩니다.
$.getJSON('/someController/someAction', function (result) {
if (!result.success) {
alert(result.error);
} else {
// handle the success
}
});
사용자 지정 속성을 사용하면 가능합니다. 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
};
}
}
:이 작업을 수행하는
이 예외가 모든 예외에 대해 실행되지 않습니까? – Dashu
@ 대쉬, 모든 예외에 대해 예. 요청이 AJAX 요청인지 여부와 요청 콘텐츠 유형이 application/json인지 여부도 테스트 할 수 있으며이 경우에만 예외를 처리합니다. –
좋은 해결책, 감사합니다 대린처럼 보입니다! – Dashu