2012-09-27 3 views
1

암호 확인 입력란에 대한 유효성 검사 유효성 검사와 암호가 최소 문자 수에 맞는지 확인하는 서버 유효성 검사가 있습니다.ASP.NET MVC의 "비교"유효성 검사가 제대로 작동하지 않습니다.

보기 :

@Html.PasswordFor(model => model.password) 
@Html.PasswordFor(model => model.repeatPassword) 

모델 :

public class Model_Clerk 
    {    
     public int clerkID { get; set; }  

     public string password { get; set; } 

     [Compare("password", ErrorMessage = "Error comparing password and password confirm values")]       
     public string repeatPassword { get; set; } 

    } 

컨트롤러 액션 메소드 :

서버 유효성 검사 경고 메시지가 올바르게 표시하고, 그 후 비교 실행
public ActionResult SaveClerk(Model_Clerk model) 
    {    
     //Password minimum lenght 
     if (!string.IsNullOrEmpty(model.password) && model.password.Trim().Length < 5) 
     { 
      ModelState.AddModelError(model.password, "Password must be at least 5 characters long");     
     } 

     if (ModelState.IsValid) 
     { 
      //Save logic here... 
     } 
     else 
     { 
      return PartialView("EditClerks", model); 
     } 
    } 

유효성 검사가 더 이상 작동하지 않습니다. 어떤 생각?

+0

[StringLength (5, ErrorMessage = "암호는 적어도 5 자 이상이어야합니다., MinimumLength = 5)]'암호 속성에서 '[Required]'를 모두에 추가하십시오 –

+0

사실 I 더 많은 서버 유효성 검사가 있지만 사실은 ModelState.AddModelError 메서드를 사용하여 서버 유효성 검사 중 하나를 실행 한 후에 비교 유효성 검사가 제대로 작동하지 않는 것 같습니다. 항상 두 필드가 비어있는 경우에도 비교 된 값이 같지 않다고 말합니다. 클라이언트 측에서 일부 문제가 발생하지만, 무엇을 모릅니다. 어쨌든 팁을 주셔서 감사합니다, 나는 StringLength 주석의 "MinimumLength"에 대해 몰랐습니다. –

+1

당신은'[Required]'가 없기 때문에 문제가 될 수도 있습니다. 이것을 추가하고 업데이트 해주세요. –

답변

1

우리 의견에서 실제로 가장 좋은 해결책은 자신의 DataAnnotation을 작성하는 것입니다.

귀하의 DataAnnotation 코드는 암호가 비어와 유효하지 않은 경우 확인해야하고, 다음 두 값을 비교하는 것 [CompareIf("password", ErrorMessage = "Error comparing password and password confirm values")]

처럼 뭔가.

+0

예, 그렇습니다. [Compare] 유효성 검사기가 [Required] 유효성 검사기 옆에 필요하지만 그렇게 보이는 것은 좋지 않으므로 대답은 받아 들일 수 있습니다. –

관련 문제