2011-09-18 16 views
8

属性DisplayFormatAttribute.ConvertEmptyStringToNullのデフォルト値はtrueです。私は全体のサイト(またはクラスまたはページでも良い)にもfalseにデフォルトにしたいと思います。私は私が各テストフォームフィールドを飾るする必要はありませんこれを行うことができます方法はあります:DisplayFormatAttribute.ConvertEmptyStringToNullのデフォルトをサイト間でfalseに設定します。

[DisplayFormat(ConvertEmptyStringToNull=false)] 
+1

あなたはどのバージョンのMVCを使用していますか? – Paul

+0

MVC 3.複数のバージョンが質問の恩恵を受ける場合は、タグを汎用のままにしました – Brettski

答えて

15

あなたはこのような独自のカスタムモデルのメタデータプロバイダを作成することができます。

public class CustomModelMetadataProvider : DataAnnotationsModelMetadataProvider 
{ 
    protected override ModelMetadata CreateMetadata(IEnumerable<System.Attribute> attributes, System.Type containerType, System.Func<object> modelAccessor, System.Type modelType, string propertyName) 
    { 
     var modelMetadata = base.CreateMetadata(attributes, containerType, modelAccessor, modelType, propertyName); 
     if (string.IsNullOrEmpty(propertyName)) return modelMetadata; 

     if (modelType == typeof(String)) 
       modelMetadata.ConvertEmptyStringToNull = false; 

     return modelMetadata;   
    } 
} 

からログインあなたのapp_start:

ModelMetadataProviders.Current = new CustomModelMetadataProvider(); 
関連する問題