2016-08-02 3 views
0

asp.net web api 2 ID가있는 등록 양식이 있습니다.ModelState에서 자세한 오류를 얻는 방법 asp.net 웹 API ID

이 내 등록 기능입니다 :

enter image description here

가 어떻게이 자세한 오류를 얻을 수 있습니다 : valide되지

// POST api/Account/Register 
    [AllowAnonymous] 
    [Route("Register")] 
    public async Task<IHttpActionResult> Register(RegisterBindingModel model) 
    { 
     if (!ModelState.IsValid) 
     { 
      return BadRequest(ModelState); 
     } 

     var user = new ApplicationUser() { UserName = model.Email, Email = model.Email }; 

     IdentityResult result = await UserManager.CreateAsync(user, model.Password); 

     if (!result.Succeeded) 
     { 
      return GetErrorResult(result); 
     } 

     try 
     { 
      ...send email 
     } 
     catch (Exception ex) 
     { 
      throw new Exception(ex.ToString()); 
     } 
     return Ok(); 
    } 

ModelState 경우 이런 식으로 뭔가를 반환? ModelState에서 모든 자세한 오류를 동적으로 얻는 방법을 찾고 있습니다. 응답을받을 때 웹 API 또는 자바 스크립트에서해야하는지 잘 모르겠습니다.

+1

당신이'data.modelState [ "model.Password"]에서 오류가 의미합니까 [0]'? –

+0

예,하지만 다른 장소에있을 때마다 동적으로 모든 세부 오류를 어떻게 얻을 수 있습니까? – user3378165

+0

@MichaelCoxon 고맙습니다. 제게 많은 도움이되었습니다! – user3378165

답변

0

나는 AccountController에 다음 함수를 작성했다. ModelState의 오류를 반복하고 목록에 추가 한 다음 목록을 반복하여 ModelState에 추가합니다.

public void SetCustomError() 
    { 
     var errors = new List<string>(); 
     foreach (var state in ModelState) 
     { 
      foreach (var error in state.Value.Errors) 
      { 
       errors.Add(error.ErrorMessage); 
      } 
     } 
     foreach (var error in errors) 
     { 
      ModelState.AddModelError("CustomError", error); 
     } 
    } 

그리고

다음 내 자바 스크립트에서 나는 이런 식으로 취급 :

function showError(jqXHR) { 
    if (jqXHR) {  
     jsonValue = jQuery.parseJSON(jqXHR.responseText); 
     if (!jsonValue.modelState["customError"] == undefined) { 
      $("#error").text(jsonValue.modelState["customError"][0]); 
     } 
     else { 
      $("#error").text(jsonValue.modelState[""][0]); 
     } 
     $("#modalError").dialog(); 
    } 
} 
관련 문제