2012-10-18 5 views
4

.NET 4.5 MVC 응용 프로그램에서 면도기 및 데이터 주석을 사용하고 있습니다. 이 뷰 모델입니다 : 생성 된 이름 (콜론, 공간, 필수 필드 스타) 후 콜론을하는 디스플레이 부가 요소를 제거하고이 할 수있는 방법이도우미 생성 레이블에 콜론과 별 추가

[Required(ErrorMessage = "Title is required.")] 
    [Display(Name = "Title: *")] 
    public string Title { get; set; } 

    [Display(Name = "Comments:")] 
    public string Comments { get; set; } 

있습니까? 오류 메시지에서 콜론이 표시되지 않아야합니다.

답변

6
는 동시에, labelFor이 원하는 경우

당신은 당신의 자신의 사용자 지정 디스플레이 (LabelFor 유사) 도우미, 또는

을 사용할 수

<PropertyName> : 

와 당신이 필요가있을 때

<PropertyName> : * 
속성

사용자 정의 DataAnnotationsModelMetadataProvider를 사용할 수 있습니다.

metadata.DisplayName 오류 메시지를 사용하는 경우
public class CustomModelMetadataProvider : DataAnnotationsModelMetadataProvider 
{ 
    protected override ModelMetadata CreateMetadata(IEnumerable<Attribute> attributes, Type containerType, Func<object> modelAccessor, Type modelType, string propertyName) 
    { 
     var metadata = base.CreateMetadata(attributes, containerType, modelAccessor, modelType, propertyName); 
     if (propertyName != null) {    
      metadata.DisplayName = (metadata.DisplayName ?? propertyName) + " : "; 
      if (attributes.OfType<RequiredAttribute>().Any()) 
       metadata.DisplayName +=" * "; 
     } 
     return metadata; 
    } 
} 

(10)는이를 사용하여, 당신은 이제 Global.asax.cs

Application_Start()

ModelMetadataProviders.Current = new CustomModelMetadataProvider() 

을 넣어 가지고, 내가 할 수 ... 확실하지 않다 너 시험해!

+0

감사합니다. Mr Althaus, 좋은 솔루션을 사용해 보겠습니다 .-) – user1563526

0

라파엘 솔루션이 저에게 효과적이었습니다. 그 도움으로 별표를 빨간색으로 채우기 위해 다음 JavaScript를 레이아웃 파일에 넣었습니다.

$('.control-label').each(function() { 
    var textVal = $(this).html(); 
    if (textVal.indexOf("*") > 0) { 
     var newTextVal = textVal.replace("*", ""); 
     $(this).html(newTextVal + "<span style='color:#ff0000'> *</a>"); 
    } 
}); 
관련 문제