2014-06-13 3 views
0

입니다. ASP.NET MVC 웹 사이트를 현지화하려했는데 문자열을 저장하기위한 리소스 파일을 만들기로했습니다. 나는 이런 식으로 만든 주석과 모델을 가지고 :MVC - [Display] 특성을 로컬 화합니다. 이름은

[Required(ErrorMessage = "Please enter your e-mail address")] 
    [Display(Name = "E-mail address:", Prompt = "[email protected]")] 
    public string EmailAddress { get; set; } 

이 내 새 리소스 파일 : 나는 리소스 파일을 사용하고 그것에서 문자열을 얻으려면

Contact.resx 
EmailName  E-mail address: 
EmailPrompt [email protected] 
EmailReq  Please enter your e-mail address 

. 나는 [필수] 및 [디스플레이]에서 작동하도록 만들었지 만 이름은 단지

[Required(ErrorMessageResourceType = typeof(Contact), ErrorMessageResourceName = "EmailReq")] 
    [Display(ResourceType = typeof(Contact), Name = "EmailName")] 
    public string EmailAddress { get; set; } 

입니다.하지만 프롬프트는 어떻게됩니까? Prompt = "EmailPrompt"를 추가하면 "emailPrompt"가 "[email protected]"이 아닌 문자열로 저장됩니다. 어떻게 해결할 수 있습니까?

+0

http://geekswithblogs.net/shaunxu/archive/2012/09/04/localization-in-asp.net-mvc-ndash-upgraded.aspx –

+0

나는 이미이 기사를 읽었습니다. 그러나이 문제는 [Display] 주석에 있습니다.이 MSDN 기사에 ResourceType! = null 인 경우 프롬프트 문자열은 리소스 파일의 키 이름을 참조해야하며 그렇지 않습니다 - http://msdn.microsoft .com/en-us/library/system.componentmodel.dataannotations.displayattribute.rescetype.aspx –

답변

0

내 문제의 해결책을 찾았으며 다른 코드에서 실수를 저질렀습니다. 나는 반사를 통해 프롬프트 값을 얻고 있었다. 그것은 공공 필드 신속하고 GetPrompt() 메소드를 통해 값을 얻기에 큰 차이가있다 :

DisplayAttribute attr = GetTheAttribute(); 
string firstVal = attr.Prompt; 
string secondVal = attr.GetPrompt(); 

가 firstVal 리소스 파일에보고 할 키 이름을 포함; 리소스의 실제 값은 secondVal 에서처럼 GetPrompt()를 사용하여 검색됩니다.

관련 문제