2

내가 이런 뷰 모델이 :이 같은 물건을 할 때어떻게 다양한 Resource 파일로 공통 ViewModel을 만들 수 있습니까?

public class MyViewModel 
{ 
    [Display(Name = "One_Name", ResourceType = typeof(Resources.User.Resource1))] 
    public string One { get; set; } 

    [Display(Name = "Two_Name", ResourceType = typeof(Resources.User.Resource1))] 
    public string Two { get; set; } 
} 

페이지 1에 사용되며, 잘 작동합니다 (예 : 자원을 다시 가져옵니다) :

@Html.LabelFor(model => model.One) 

그러나 또한이 ViewModel을 페이지 2에 사용하고 싶지만 속성을 다른 리소스 파일 (예 : Resources.User.Resource2)로 지정하지 않아도됩니다.

나는 속을 바꿀 필요가 없지만 몇 가지 OO 트릭을 열어 둔다.

문제는 속성 인수는 문자열, 상수, typeof 또는 배열 표현식이어야합니다.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

+0

내가 그를 필요로 할 때 @Darin Dimitrov는 어디에 있습니까? :) – RPM1984

답변

0

그래, MVC가 그런 시나리오를 지원하지 않는 것처럼 보입니다. 사용자 고유의 ResourceType 클래스를 제공 할 수 있지만 표시 문자열을 반환하는 정적 속성 (예 : public static string One_Namepublic static string Two_Name)이 있어야하며 원하는대로 할 수있는 우아한 방법이 없습니다.

그러나 Html.LabelFor은 특히 지구를 산산조각 낼 수 없기 때문에 쉽게 볼 수 있습니다. 직접 <label> 요소를 작성하고 현지화 된 문자열을 직접 가져 오십시오. 이는 ResourceManager.GetString과 같이 간단합니다. 대부분의 경우 Html.LabelFor을 계속 사용할 수 있으며 특정보기에서 표시 텍스트를 변경해야하는 (희망 사항은 드물게) 경우에만 자신의 라벨을 쓰는 것이 좋습니다.