문제
누구나 사용할 때 텍스트를 지정하는 방법에 대한 아이디어를 얻었습니다. Html.LabelFor(c=>c.MyField)
. 그냥이야 MyField
화면에 표시하기에 적절한 이름이 아닐 수도 있으므로 대신 "The Super Fantastic Field"를 원할 수도 있지만 과부하가있는 것처럼 보이지 않습니다.
어떤 아이디어?
해결책
너는 사용한다 System.ComponentModel.DataAnnotations.DisplayAttribute
:
[Display(Name = "My Field")]
public string MyField { get; set; }
설정 ResourceType
속성의 속성을 사용하면 리소스 파일을 사용할 수 있습니다.
(.NET 4 이전에 사용하기 전에 System.ComponentModel.DisplayNameAttribute
디스플레이 이름이 컴파일 타임 상수 여야한다는 경고를 사용하여.)
다른 팁
쉬운 솔루션보기에 다음을 추가하십시오.
@Html.LabelFor(c=>c.MyField, "My Field")
MVC 3에는 새로운 오버로드가 있으므로 Labelfor 도우미에 대한 사용자 정의 테스트를 구체화 할 수 있어야합니다.
아직 v2를 다운로드하지 않았으므로 테스트 할 수는 없지만 DynamicData와 같이 작동한다고 생각합니다.이 경우 모델에서 이와 같은 작업을 수행 할 것입니다.
[Display(Name = "The Super Fantastic Field")]
public string MyField {get;set;}
두 가지 방법이 있습니다
1 "직접 주석"
2 "자원이있는 아노타티노"
직접 주석
[Display(Name = "My Field")]
public string MyField { get; set; }
자원이있는 Annotatinos
[Display(Name = "My_Field",ResourceType = typeof(Resource))]
public string MyField { get; set; }
두 번째 방법은 아마도 자원 파일에 값을 추가해야합니다. resource.resx.
당신의 목적에 맞는 것을 사용하십시오.
아직 CP1을 확인하지는 않았지만 Scott의 릴리스를 읽었으며 코드가 T4에 의해 생성되었음을 기억하는 것 같습니다. 나는 당신이 항상 그것을 mod 할 수 있다고 생각하지만, 그들이 CP2에서 과부하를 제공 할 것이라고 생각합니다.
편집 : 소스는 항상 사용할 수 있으므로 메소드를 수정하고 T4 생성기를 변경하면 이동하기에 좋습니다. 또한 해당 모드에 대한 티켓이나 요청 (어떻게 든)를 입력하여 다음 버전으로 작동합니다.
5 개의 과부하가 있습니다. 몇몇은 "String LabelText"의 두 번째 매개 변수를 제공하며 "Super Fantastic Field"로 설정합니다.