2011-09-18 11 views
8

Atrybut, DisplayFormatAttribute.ConvertEmptyStringToNull ma wartość domyślną true. Chciałbym ustawić domyślną wartość false dla całej witryny (lub według klasy lub strony też byłoby dobre). Czy istnieje sposób mogę to zrobić, więc nie ma potrzeby, aby ozdobić każde pole formularza testowego z:Ustaw wartość domyślną dla DisplayFormatAttribute.ConvertEmptyStringToNull na wartość false w witrynie

[DisplayFormat(ConvertEmptyStringToNull=false)] 
+1

Jakiej wersji MVC używasz? – Paul

+0

MVC 3. Zostawiłem ogólny tag, na wypadek gdyby wiele wersji mogło skorzystać z pytania – Brettski

Odpowiedz

15

Można tworzyć własne wzór dostawcą metadanych tak:

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

Następnie zarejestrować to w twojej app_start:

ModelMetadataProviders.Current = new CustomModelMetadataProvider(); 
Powiązane problemy