2011-05-05 6 views
0

부분보기를 반환하는 동작에 Ajax.BeginForm 게시물을 게시 할 때 ViewData 항목에 오류 정보를 보냅니다.아약스 요청에 대한 속성 기반 오류 처리? (가치가 있습니까?)

현재 모든 오류를 처리하기 위해 try catch 문에서 모든 메서드를 래핑해야합니다.

[HttpPost, ValidateAntiForgeryToken] 
public virtual ActionResult Save(int id, FormCollection form) 
{ 
    MyModel model; 
    try 
    { 
     ...do stuff... 

    } 
    catch(Exception ex) 
    { 
     ...log... 
     ViewData["ResultInfo"] = new ResultInfo(false, Resource.SAVE_NOT_SAVED, someErrorMessage); 
    } 

    return PartialView("Folder/SomeView", model); 
} 

나는 정의는 handleError 속성으로이 작업을 수행하고 싶습니다,하지만 난 물린 기다리고 많은 개는이 있어야 실현. 아무도 시도해 본 경험이 있습니까?

편집 :
컨트롤러 기본 클래스에서 오류 처리가 끝났습니다.

이 ErrorHandlingController에는 2 가지 방법이 있습니다. RegisterErrorHandler 및 RegisterModel입니다. 에러 처리기가 기본 클래스 OnException에서 발견되었을 때 등록되어 있으면 ResultInfo를 추가하고 에러를 처리 된 것으로 표시하고 RegisterErrorHandler에서 설정 한 뷰 및 오류 캡션을 사용합니다.

이렇게하면 오류 처리기로 모델을 가져 오는 것이 매우 쉽습니다. 오류 처리기가 메서드 내부의 첫 번째 행으로 등록되어 있으므로 리소스를 직접 사용하는 것이 자연 스럽습니다.

답변

1

이 질문에 대한 대답은 다음과 같이 도움이 될 것이라고 생각합니다. How to handle model state errors in ajax-invoked controller action that returns a PartialView.

+0

흥미로운 포스트 +1이지만 Ajax.BeginForms에 적용된 솔루션에 문제가 있습니다. 비어있는 형식이 아닌 경우 관련 뷰와 함께 렌더링 된 빈 모델을 반환해야합니다. –

+0

@Carl R - 음, 더하기 측면에서 볼 때 뷰에 대한 뷰 모델을 만드는 등 좋은 연습을 채택해야합니다. 추가 보너스로 그 뷰를 제거 할 수 있습니다. 'FormsCollection' 매개 변수) –

+0

글쎄 "MyModel"은 뷰 모델이며, 추악한 FormsCollection 매개 변수는 HandleError 서브 클래스에서 쉽게 접근 할 수 있으므로 구현하기 가장 쉬운 부분입니다. 올바른 종류의 뷰 모델을 만들고 올바른 뷰를 반환하는 것은 어려운 부분입니다. :) –

관련 문제