2013-01-03 11 views
7

Biorąc pod uwagę model z tych adnotacji danych „Pole jest wymagane odpowiedź aktywny”Web walidacja Api ModelState jest ignorowanie DisplayAttribute

public class Example 
{ 
    [Required] 
    [Display(Name = "Activity response")] 
    public string ActivityResponse { get; set; } 
} 

Spodziewam się komunikat o błędzie stan modelu będzie Zamiast tego jest "Wymagane pole ActivityResponse".

+0

Wygląda na to, że nie zgadzamy się z MVC - tutaj możesz zgłosić błąd: http://aspnetwebstack.codeplex.com/workitem/list/basic –

+0

Dzięki Youssef, raport o błędzie można znaleźć pod adresem http://aspnetwebstack.codeplex.com/workitem/744 –

Odpowiedz

1

Miałem ten sam problem i zrobiłem obejście tego problemu. Wiem, że to nie jest doskonałe.

Dla każdego atrybutu dataannotation utworzyć nową klasę

public class RequiredAttribute : System.ComponentModel.DataAnnotations.RequiredAttribute 
{ 
    protected override ValidationResult IsValid(object value, ValidationContext validationContext) 
    { 
     validationContext.DisplayName = ModelMetadataProviders 
      .Current 
      .GetMetadataForProperty(null, validationContext.ObjectType, validationContext.DisplayName) 
      .DisplayName; 
     return base.IsValid(value, validationContext); 
    } 
} 



public class StringLengthAttribute : System.ComponentModel.DataAnnotations.StringLengthAttribute 
{ 
    public StringLengthAttribute(int maximumLength) 
     : base(maximumLength) 
    { } 

    protected override ValidationResult IsValid(object value, ValidationContext validationContext) 
    { 
     validationContext.DisplayName = ModelMetadataProviders 
      .Current 
      .GetMetadataForProperty(null, validationContext.ObjectType, validationContext.DisplayName) 
      .DisplayName; 
     return base.IsValid(value, validationContext); 
    } 
} 

itp ....