2013-11-15 3 views
13

유효성 검사를 현지화 할 수 없습니다 : '비밀번호 확인'과 '비밀번호'가 일치하지 않습니다. MVC5에서'암호 확인'과 '암호'가 일치하지 않습니다. MVC5

[Required] 
     [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] 
     [DataType(DataType.Password)] 
     [Display(Name = "Password")] 
     public string Password { get; set; } 

     [DataType(DataType.Password)] 
     [Display(Name = "Confirm password")] 
     [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] //Why not display this message??????? 
     public string ConfirmPassword { get; set; } 

도와주세요.

+0

지역화 란 코드를 특정 언어로 맞춤 설정하는 것을 의미합니다. 국제화를 의미합니까? –

답변

6

알려진 문제이며 현재 올바르게 작동하지 않는 것 같습니다 (http://aspnetwebstack.codeplex.com/workitem/1401).

그러나 임시 해결 방법은 사용되지 않음으로 표시된 System.Web.Mvc의 비교 특성을 사용하는 것입니다. 다음은 예입니다.

using CompareObsolete = System.Web.Mvc.CompareAttribute; 

... 

[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] 
[DataType(DataType.Password)] 
[Display(Name = "Password")] 
public string Password { get; set; } 

[DataType(DataType.Password)] 
[Display(Name = "Confirm password")] 
[CompareObsolete("Password", ErrorMessage = "The password and confirmation password do not match.")] 
public string ConfirmPassword { get; set; } 

공식적인 수정 프로그램을 사용할 수있을 때까지 현재이 대안을 사용하고 있습니다. 모든 것이 완벽하게 작동합니다.이 속성을 사용하여 리소스를 사용하여 오류 메시지를 현지화합니다.

일단 공식 수정 사항이 나오면 업데이트하는 것을 잊지 마십시오.

편집 : 문제는 최신 릴리스에서 수정되었습니다.

--option 1

변경 :

[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] 

[System.Web.Mvc.Compare("Password", ErrorMessage = "Your custom error message")] 

--option 2

13

는이 버그를 해결하기 위해 2 가지 옵션이 있습니다 (나는 이것을 추천한다.

PM> update-package 

당신은에 오류에 migh :

public ApplicationDbContext() 
      : base("DefaultConnection") 
     { 
     } 
일)

우리는 패키지 관리자 콘솔 및 종류로 이동하여 Visual Studio에서 우리의 ASP.NET MVC (5)를 업데이트해야

그 오류는 해당 오류가이를 해결하기 위해 MVC (5)의 내부 구조의 업데이트로 인해 발생 : CompareAttribute의 두 가지 유형이있는 것 같습니다 https://stackoverflow.com/a/23090099/2958543

2

. MSDN을 살펴보면, 네임 스페이스가 System.Web.Mvc 인 것은 쓸모없는 것으로 보이고 네임 스페이스가 System.ComponentModel.DataAnnotations 인 것을 사용하는 것이 좋습니다. 링크 : 비주얼 스튜디오와 https://msdn.microsoft.com/en-us/library/system.web.mvc.compareattribute(v=vs.118).aspx

, 당신은 다음과 같이 주석에 속성 수있는 공간 주석에 명시해야하고 추가 할 것입니다 : 자세한 내용은

[System.ComponentModel.DataAnnotations.CompareAttribute("Password", ErrorMessage = "The password and confirmation password do not match.")] 

을 참조 : System.ComponentModel.DataAnnotations.compare vs System.Web.Mvc.Compare

관련 문제