2009-07-14 4 views
38

유효성 검사에 실패하면 ModelState을 수정하는 컨트롤러에 유효성 검사 기능을 쓰는 것을 좋아합니다. 예를 들어 :ASP.NET MVC에서 ModelState.AddModelError의 주요 매개 변수는 무엇입니까?

private bool ValidateMoney(string raw, string name, decimal min, decimal max) { 
    try { 
     var dec = Convert.ToDecimal(raw); 

     if (dec < min) { 
      throw new ArgumentOutOfRangeException(name + " must be >= " + min); 
     } 
     else if (dec > max) { 
      throw new ArgumentOutOfRangeException(name + " must be <= " + max); 
     } 
    } 
    catch (Exception ex) { 
     ModelState.AddModelError(name, ex.GetUserMessage()); 
    } 
    return ModelState.IsValid; 
} 

그러나, 나는 결코 ModelState.AddModelError에 바보 "키"인수에 넣어 해야할지하지 않습니다. (이 예제에서는 UI 표시 이름으로 설정했습니다.)

MVC 개발자가 추가 할 때 생각한 사항은 무엇입니까?

+3

key 인수라는 모델 필드와 결합 될 것이다 아마 문서가 있어야한다만큼 명확하지 않다, 전혀 바보가 아닙니다. :) – splattne

답변

52

키는 ValidationMessage HTML 도우미가 표시 할 정확한 오류 메시지를 알기 위해 사용됩니다.

예 :

<%=Html.TextBox("Name") %> <br /> 
<%=Html.ValidationMessage("Name") %> 

ModelState 사전의 핵심 "이름"이 메시지가 표시됩니다 ValidationMessage 도우미.

+6

유효성 검사는 블로그뿐만 아니라 모든 종류의 응용 프로그램에서 사용됩니다. –

+2

@ 프랭크 정중하게, 멋진 기능이 아닌가요? 오류는 원하는 필드 바로 옆에 나타납니다! 나는이 질문에 나를 데려온 후에야 이걸 배웠다. – gideon

+4

키는 빈 문자열 일 수 있지만 null이 아니어야합니다. 키가 빈 문자열이면 Html.ValidationSummary (false) html 도우미를 사용하여 볼 수 있습니다. –

9

key 매개 변수는 유효성 검사 오류를 양식 필드와 연관시키는 데 사용할 수 있습니다.

당신이 @Html.TextBoxFor를 사용 (또는 유사)와 @Html.ValidationMessageFor, 당신은 (사용 요소 검사) 검사 중 필드의 HTML name에서 키의 값을 얻을 수 적이 있다면.

방금 ​​HTML <input>을 사용한 경우 @Html.ValidationMessage("AKeyIMadeUp")을 사용하여 유효성 확인 자리 표시자를 추가하고 ModelState.AddModelError("AKeyIMadeUp", "The value you entered is no good");과 같이 메시지를 표시 할 수 있습니다. 실패 양식 제출하면 모델

[Required] 
    [DataType(DataType.Password)] 
    [Display(Name = "Current password")] 
    public string OldPassword { get; set; } 

에서 필드를 확인하고 modelState이 잘못 얻었다 동안 같은 같은 해당 필드에 오류 메시지 바인딩을 설정할 수 있다고 생각하면서

1

사실 당신은 어떤 검증 메시지를 설정할 수 있습니다.

ModelState.AddModelError("OldPassword", "Current Password do not match "); 

다음 오류 메시지가 "를 OLDpassword"

관련 문제