跨站点将DisplayFormatAttribute.ConvertEmptyStringToNull的默认值设置为false

Bre*_*ski 8 asp.net-mvc

属性DisplayFormatAttribute.ConvertEmptyStringToNull的默认值为true.我想将它默认为整个网站的假(或者通过类或页面也是好的).有没有办法可以做到这一点所以我不需要用以下内容装饰每个测试表单字段:

[DisplayFormat(ConvertEmptyStringToNull=false)]
Run Code Online (Sandbox Code Playgroud)

Pau*_*aul 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;           
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在app_start中注册:

ModelMetadataProviders.Current = new CustomModelMetadataProvider();
Run Code Online (Sandbox Code Playgroud)