2013-04-12 6 views
1

"JsonResult"유형의 작업 메서드가 있습니다. 나는 아약스 게시물을 사용하여 호출합니다. 나는 action 메소드의 커스텀 에러를 ajax 포스트로 돌려 보내고 그 에러를 validation Summary로 표시하고 싶다. 나의 이해, 당신은 아약스의 게시물을 할 때 모델 검증을 통과하거나 서버의 응답을 얻었다 아닌 경우, 그것은 단지 관심이 있다면, 그것은 상관하지 않는다에서JsonResult 메서드에서 ajax post 오류 함수에 대한 사용자 지정 오류를 반환하고 유효성 검사 요약 아래에 표시합니다.

[HttpPost] 
public JsonResult RegisterUser(RegistrationModel model) 
{ 
    //if username already exists return custom error to be displayed on view  
    //under validation summary 
    // control should go back to error function with message to be displayed. 
} 


    $.ajax({ 
     url: url, 
     type: 'POST', 
     dataType: 'json', 
     data: ko.toJSON(model), 
     contentType: "application/json; charset=utf-8", 
     success: function (result) { 
      success(result) 
     }, 
     error: function (req, status, error) { 
      error(req, status, error); 
     } 
    }); 

    function success(result) { 
    //Do Something 
    } 

    function error(req, status, error) { 
     //Display error messages under validation summary. 
    } 

답변

4

. 서버에서 예외가 발생하면 아약스 오류 함수가 발생합니다.

그렇다면 유효성 확인 상태를 알려주는 json 객체를 반환하면됩니다.

if(!ModelState.IsValid){ 
     var modelStateErrors = this.ModelState.Keys.SelectMany(key => this.ModelState[key].Errors); 
     var message = "Please fix the following: " + Environment.NewLine; 

     foreach (var modelStateError in modelStateErrors) 
     { 
      message += modelStateError.ErrorMessage + Environment.NewLine; 
     } 

    return Json(new {success = false, response = message}) 
} 


// Do other logic 

return Json(new {success = true, response = "Successful message"}) 

다시이 개체를 전달하면, 다음과 같은 자바 스크립트

success: function (result) { 
      if(result.success === true){ 
       $('#status-div').empty().html('<div class="success">' + result.response + '</div>'); 
      } 
      if(result.success === false){ 
       $('#status-div').empty().html('<div class="fail">' + result.response + '</div>'); 
      } 

     } 
을 수행 할 수 있습니다