mvc3의 razor에서 LabelFor의 표시 이름을 변경하는 방법은 무엇입니까?
면도기 엔진에서는 LabelFor
도우미 메서드를 사용 하여 이름을 표시했습니다.
그러나 표시 이름은 표시하기에 좋지 않은 것 같습니다. 그래서 내 표시 이름을 변경해야합니다.
@Html.LabelFor(model => model.SomekingStatus, new { @class = "control-label"})
속성을 사용하여 뷰 모델 속성을 장식 [DisplayName]
하고 사용할 텍스트를 지정할 수 있습니다.
[DisplayName("foo bar")]
public string SomekingStatus { get; set; }
또는 텍스트를 지정할 수있는 LabelFor 도우미의 다른 오버로드를 사용합니다.
@Html.LabelFor(model => model.SomekingStatus, "foo bar")
그리고 아니요, LabelFor
도우미가 지원하지 않으므로 MVC3에서 클래스 이름을 지정할 수 없습니다 . 그러나 이것은 MVC4 또는 5에서 작동합니다.
이것은 오래된 질문 이었지만 기존 답변은 모델을 다시 생성 할 때 사용자 지정 특성을 버리는 심각한 문제를 무시합니다. 현재 사용 가능한 옵션을 다루기 위해 더 자세한 답변을 추가하고 있습니다.
세 가지 옵션이 있습니다.
[DisplayName("Name goes here")]
데이터 모델 클래스에 속성을 추가하십시오 . 단점은 데이터 모델을 재생성 할 때마다 버려진다는 것입니다.- 문자열 매개 변수를
Html.LabelFor
. 예 :@Html.LabelFor(model => model.SomekingStatus, "My New Label", new { @class = "control-label"})
참조 : https://msdn.microsoft.com/en-us/library/system.web.mvc.html.labelextensions.labelfor(v=vs.118).aspx 단점은 레이블을 반복해야한다는 것입니다. 모든 관점에서. - 세 번째 옵션입니다. 데이터 클래스에 연결된 메타 데이터 클래스를 사용합니다 (세부 사항은 다음 참조).
옵션 3-메타 데이터 클래스 추가 :
Microsoft는 기존 클래스를 수정하지 않고도 Entity Framework 클래스의 속성을 장식 할 수 있습니다 ! 이는 데이터베이스 클래스에 연결되는 메타 데이터 클래스 (효과적으로 EF 클래스의 측면 확장)를 가짐으로써 가능합니다. 이렇게하면 데이터 모델을 재생성 할 때 변경 사항이 손실되지 않도록 클래스 자체가 아닌 관련 클래스에 속성을 추가 할 수 있습니다 .
예를 들어 데이터 클래스 MyModel
에 SomekingStatus
속성이있는 경우 다음과 같이 할 수 있습니다.
먼저 같은 이름 의 부분 클래스 를 선언 하고 같은 네임 스페이스를 사용하여 재정의하지 않고 클래스 속성을 추가 할 수 있습니다.
[MetadataType(typeof(MyModelMetaData))]
public partial class MyModel
{
}
생성 된 모든 데이터 모델 클래스는 부분 클래스이므로 동일한 이름의 더 많은 클래스를 생성하여 추가 속성 및 메서드를 추가 할 수 있습니다 (매우 편리하며 모델에서 다른 필드 유형의 형식화 된 문자열 버전을 제공하는 데 자주 사용합니다. ).
2 단계 : 새 부분 클래스에서 참조하는 메타 데이터 클래스를 추가합니다.
public class MyModelMetaData
{
// Apply DisplayNameAttribute (or any other attributes)
[DisplayName("My New Label")]
public string SomekingStatus;
}
메모:
- 메모리에서 메타 데이터 클래스를 사용하기 시작하면 실제 클래스 (
[required]
등) 의 기존 속성을 무시할 수 있으므로 메타 데이터 클래스에서 복제해야 할 수 있습니다. - 이것은 마법으로 작동하지 않으며 어떤 클래스에서도 작동하지 않습니다. UI 데코레이션 속성을 찾는 코드는 먼저 메타 데이터 클래스를 찾도록 설계되었습니다.
속성을 속성으로 장식하여 레이블의 텍스트를 변경할 수 있습니다 DisplayName
.
[DisplayName("Someking Status")]
public string SomekingStatus { get; set; }
또는 원시 HTML을 명시 적으로 작성할 수 있습니다.
<label for="SomekingStatus" class="control-label">Someking Status</label>
DisplayName 특성을 사용하여 모델 속성을 장식합니다.
@ Html.LabelFor (model => model.SomekingStatus, "foo bar")
'Development Tip' 카테고리의 다른 글
상속을 통해 열거 형 확장 (0) | 2020.10.06 |
---|---|
Numpy를 사용하여 미분을 어떻게 계산합니까? (0) | 2020.10.06 |
jQuery없이 가장 가까운 요소 찾기 (0) | 2020.10.06 |
생성자에서 정적 최종 필드 초기화 (0) | 2020.10.06 |
이 두 줄이 같은가요? (0) | 2020.10.06 |