2010-07-19 4 views
2

전자 메일 주소의 유효성을 검사하기 위해 데이터 주석을 사용하고 있습니다.C# RegularExpression 한 번 호출 된 속성 생성자

emailaddress가 유효하지 않을 때 오류 메시지를 표시하려면 ErrorMessages라는 RESX 파일을 사용합니다.

내 코드는 다음과 같다 :

public class EmailAdressAttribute : RegularExpressionAttribute 
{ 
    public EmailAdressAttribute() 
     : base(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,3}|[0-9]{1,4})(\]?)$") 
    { 

     ErrorMessage = ErrorMessages.ValidateEmailAdress; 
    } 

응용 프로그램을 실행하는 동안 내 asp.net MVC 응용 프로그램의 언어 (현재 문화)로 변경

는, 기존의 언어가 여전히 표시됩니다.
디버깅 후이 특성의 생성자는 한 번만 호출된다는 것을 알았습니다 (처음 사용할 때).

속성은 어떻게 캐시됩니까? 리소스 파일에서 올바른 오류 메시지를 표시하려면 어떻게해야합니까?

답변

3

생성자에서 ErrorMessage 속성의 값을 설정하는 대신, 해당 속성을 재정의하고 필요할 때 리소스에서 해당 텍스트를 읽는 방법은 무엇입니까?

public override string ErrorMessage 
{ 
    get { return ErrorMessages.ValidateEmailAdress; } 
} 

속성

는 클래스의 예를에 속한 것이 아닙니다,하지만 유형합니다. 이것이 앱의 평생에 한 번만 생성 된 이유입니다.

+0

감사합니다. 솔루션이 작동했습니다 (override 키워드를 사용하지 않고). – Jan

+0

좋습니다! 나는 ErrorMessage가 baseclass의 속성이라고 생각했다. 분명히 EmailAddressAttribute 클래스에 속합니다. –