2011-09-18 15 views
8

El atributo, DisplayFormatAttribute.ConvertEmptyStringToNull tiene un valor predeterminado de true. Me gustaría configurarlo como falso para todo el sitio (o por clase o página sería bueno también). ¿Hay alguna manera de hacer esto, así que no necesito para decorar cada campo del formulario de prueba con:Establecer predeterminado para DisplayFormatAttribute.ConvertEmptyStringToNull en falso en el sitio

[DisplayFormat(ConvertEmptyStringToNull=false)] 
+1

¿Qué versión de MVC estás usando? – Paul

+0

MVC 3. Dejé la etiqueta genérica en caso de que varias versiones se pudieran beneficiar de la pregunta – Brettski

Respuesta

15

Usted puede crear su propio modelo personalizado proveedor de metadatos como esto:

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

continuación, se registra en tu app_start:

ModelMetadataProviders.Current = new CustomModelMetadataProvider(); 
Cuestiones relacionadas