Set the default value for DisplayFormatAttribute.ConvertEmptyStringToNull to false on the site

The DisplayFormatAttribute.ConvertEmptyStringToNull attribute has a default value of true. I would like to use false by default for the whole site (or by class or page would be fine too). Is there a way I can do this, so I don’t need to decorate every field of the test form:

[DisplayFormat(ConvertEmptyStringToNull=false)] 
+8
asp.net-mvc
source share
1 answer

You can create your own metadata provider for this model, for example:

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

Then register it in app_start:

 ModelMetadataProviders.Current = new CustomModelMetadataProvider(); 
+15
source share

All Articles