2011-09-18 76 views
8

DisplayFormatAttribute.ConvertEmptyStringToNull属性的默认值为true。我想默认它为整个网站为假(或通过班级或网页也会很好)。有没有一种方法,我可以做到这一点,所以我不需要装点每个测试表单字段有:跨站点将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(); 
相关问题