누구나 사용할 때 텍스트를 지정하는 방법에 대한 아이디어를 얻었습니다 Html.LabelFor(c=>c.MyField)
. 그것은 단지 MyField
, 대신 "슈퍼 환상적인 필드"를 할 수 있습니다 화면에 표시하기에 적절한 이름되지 않을 수도 있지만 과부하가있을 나타나지 않습니다.
어떤 아이디어?
답변:
다음을 사용합니다 System.ComponentModel.DataAnnotations.DisplayAttribute
.
[Display(Name = "My Field")]
public string MyField { get; set; }
ResourceType
속성에 속성을 설정하면 리소스 파일을 사용할 수 있습니다.
(.NET 4 사용 이전 System.ComponentModel.DisplayNameAttribute
에는 표시 이름이 컴파일 타임 상수 여야한다는 점에주의했습니다.)
Error 381 An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type
. 따라서이 솔루션은 l18n에 좋지 않은 것 같습니다.
System.ComponentModel.DataAnnotations.DisplayAttribute
리소스 파일을 사용할 수있는 새로운 .NET-4를 반영하도록 답변을 업데이트했습니다 . 아직 4 / 4.5에 있지 않은 경우 이전 버전 System.ComponentModel.DisplayNameAttribute
을 다음과 같이 확장 할 수 있습니다. stackoverflow.com/a/2432520/33533
MVC 3에는 새로운 오버로드가 있으므로 도우미의 레이블에 대한 사용자 지정 테스트를 지정할 수 있어야합니다.
아직 v2를 다운로드하지 않았기 때문에 테스트 할 수는 없지만 DynamicData처럼 작동한다고 생각합니다.이 경우 모델에서 다음과 같이 할 수 있습니다.
[Display(Name = "The Super Fantastic Field")]
public string MyField {get;set;}
두 가지 방법이 있습니다
(1) "직접 주석을"
2 "리소스와 Annotatinos"
직접 주석
[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에서 생성 된 것을 기억하는 것 같습니다. 나는 당신이 항상 그것을 수정할 수 있다고 생각하지만 CP2에서 과부하를 제공 할 것이라고 생각합니다.
편집 : 소스는 항상 사용할 수 있으므로 방법을 변경하고 T4 생성기를 변경하면됩니다. 또한 해당 모드에 대한 티켓이나 요청 (어떻게 든)을 넣어 다음 버전에서 작업하도록합니다.
using System.ComponentModel;
그래도 가져야 합니다.