4

.NET4.5MVCアプリでRazorとデータ注釈を使用しています。これはビューモデルからのものです:

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

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

それらの表示属性を削除し、生成された名前の後にコロンを付ける方法はありますか(コロン、スペース、必須フィールドのスター)?エラーメッセージでは、コロンは表示されません。

4

2 に答える 2

6

独自のカスタム表示ヘルパー(と同様LabelFor)を使用することも、

LabelForを次のようにしたい場合:

<PropertyName> :

必須属性がある場合

<PropertyName> : *

カスタムDataAnnotationsModelMetadataProviderの使用を試みることができます

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;
    }
}

これを使用するには、

ModelMetadataProviders.Current = new CustomModelMetadataProvider()

Application_Start()あなたの Global.asax.cs

さて、metadata.DisplayNameエラーメッセージで使用されているかどうかはわかりません...テストさせてください!

于 2012-10-18T17:15:21.497 に答える
0

Raaphaelsソリューションは私のために働いた。その助けを借りて、次の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>");
   }
});
于 2014-08-10T17:19:37.790 に答える