4

저는 System.ComponeneModel.DataAnnotations 특성 (예 : Required 및 StringLength)을 사용하고 있습니다. 전역으로 오류 메시지를 현지화 할 수 있습니까?유효성 검사를 전역으로 지역화

은 내가 사방에 난 그냥 미친 것이 필수 속성을 사용하여이

[Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resources.Validation))] 

을하지만이 일을 할 수 있습니다 알고 있습니다.

public class LocalizedRequiredAttribute : RequiredAttribute { 
    public LocalizedRequiredAttribute() 
     : base() { 
     ErrorMessageResourceName = "Required"; 
     ErrorMessageResourceType = typeof(Resources.Validation); 
    } 
} 

(그러나 다른 방법이없는 경우, 나는이 정착 것) 당신이 필요로하는 AFAIK

+0

비슷한 질문 http://stackoverflow.com/questions/2480557/providing-localized-error-messages-for-non-attributed-model-validation-in-asp- ne –

답변

8

중 하나를 사용자 정의 속성 또는 지정 ErrorMessageResourceName : 또한 내가 좋아하는 물건을 피하기 위해 싶습니다 및 ErrorMessageResourceType 속성 또 다른 가능성 detailed here이있다 :

App_GlobalResources의 글로벌 자원 클래스를 작성, 당신은 "Messages.resx"를 만든 경우, 예를 들어, 는 다음 설정 ( 이 클래스의 이름을 DefaultModelBinder.ResourceClassKey 설정 ResourceClassKey to "Messages").

두 문자열은 MVC 2 을 무시할 수 있습니다

  • 입력 데이터 사용자 (데이터 유형과 호환되지 때 사용되는 "PropertyValueInvalid"에 대한 문자열 값 예를 들어 인 경우 정수 필드의 경우 "abc"를 입력하십시오. 이 메시지의 기본 메시지는 입니다. " '{0}'값이 {1}에 대해 이 아닙니다." 사용자가 널 아닌 필드에 데이터를 입력하지 않은 경우 "PropertyValueRequired"의 스트링 값을 사용

  • ( 예 정수 필드). 기본 메시지는 다음과 같습니다. " 값이 필요합니다."

그것은 다음 이 두 번째 메시지가 표시되지 않습니다 당신이 (이것은 기본값입니다) 귀하의 유효성 검사기 공급자 목록 에 DataAnnotationsModelValidatorProvider 이있는 경우, 두 번째 경우에 을주의하는 것이 중요합니다. 이 제공자는 비 선택적 필드 보고 추가 묵시적 [필수] 그들에게 속성을 자신의 메시지가 명시 적 [필수] 속성을 가진 다른 필드와 일치하고 당신이 클라이언트 측 유효성 검사를 얻을 수 있도록 할 수 있도록 필수 필드는 입니다.

+0

리소스 파일을 사용하지 않고 이러한 메시지를 대체 할 수 있습니까? 이 메시지가 생성되는 곳을 가로 채고 DB에서 지역화 된 오류 메시지를 설정해야합니다. 감사. –

1

MVC3의 경우 DataAnnotationsResources를 참조하십시오. 그것은 "RequiredAttribute_ValidationError"및 더 많은 것입니다. .NET Framework 언어 팩을 설치하여이 문제를 해결할 수 있습니다.

참조 같은 허용 대답과도

관련 문제