2017-03-12 9 views
0

데이터 주석 유효성 검사를 사용하여 ASP .Net 핵심 웹 응용 프로그램을 작성합니다. 모델 속성을 설명하는 속성에서 ErrorMessageResourceType 및 ErrorMessageResourceName을 정의합니다.현지화 된 리소스 - .resx 파일에서 둘 이상의 리소스에 액세스 할 수 없습니다.

리소스 파일은 기본 앱 솔루션 외부의 다른 프로젝트에 배치됩니다. 내 모델에서

(비주얼 스튜디오 2017 커뮤니티 편집기의 지원 DOTNET CLI를 사용하여) 내가 가진 :

[Required(AllowEmptyStrings = false, ErrorMessageResourceType = typeof(Resources.NewPetDataValidation), 
        ErrorMessageResourceName = "EmptyField")] 
[StringLength(30, ErrorMessageResourceType = typeof(Resources.NewPetDataValidation), 
        ErrorMessageResourceName = "NameMaxLength")] 
public string Name {get; set;} 

자료에서 프로젝트가 나는 각 언어 즉 NewPetDataValidation.en.resx, NewPetDataValidation 당 하나의 .resx 파일을 생성 .de.resx.

비주얼 스튜디오보다 리소스 편집기 리소스 이름을 사용하여 각 파일에 리소스 문자열을 추가했습니다.

영어의 경우 : 이름 : EmptyField 값 : 빈 필드!

독일어의 경우 : 이름 : EmptyField 값 : Leer Feld!

등 ... 면도기에서

내가 가진보기 : @ Html.ValidationMessageFor (모델 => Model.Name, 널 (null), 새로운 {@style = "색상 : 빨간색"})

모든 것 모델에서 특정 .resx 파일의 둘 이상의 리소스 문자열에 액세스하지 않으면 제대로 작동합니다. ErrorMessageResourceName이 특정 리소스 이름과 일치한다는 점이 긍정적입니다.

반면에 번역 된 모든 구문에 대해 분리 된 .resx 파일을 만들면 응용 프로그램이 작동합니다. 그러나 나는 많은 .resx 파일을 만드는 것이 좋은 생각이라고 생각하지 않습니다.

미리 도움을 주셔서 감사합니다.

답변

1

내 실수는 Visual Studio에서 만든 기본 리소스의 이름을 바꾸는 것이 었습니다.

근무 단계 :

  1. 만들기 기본 리소스 MyResource.resx (문법 언어/문화 접미사없이, 그것은 다른 프로젝트에서 참조 할 수있는 클래스 파일이 생성됩니다)

  2. 새로운에서는 MyResource 추가하기 .en.resx, MyResource.de.resx ... 해당 언어의 모든 언어.