2016-11-09 6 views
0

У меня есть простая программа, которая проверяет данные с помощью anotatoin, но когда я использую MetadataType для самостоятельной обработки данных, reualt validation всегда истинна. Почему результат ниже кода всегда верен?Как проверить с помощью anotation данных в C#?

public partial class User 
{ 
    public string FullName { get; set; } 
} 


[MetadataType(typeof(UserMetadata))] 
public partial class User 
{ 
} 

public class UserMetadata 
{ 
    [Required] 
    [MinLength(2)] 
    public string FullName { get; set; } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 

     var u = new User 
     { 
      // must raise error 
      FullName = "A" 
     }; 

     var context = new ValidationContext(u, null, null); 
     var list = new List<ValidationResult>(); 
     var isCorrect = Validator.TryValidateObject(u, context, list, true); 

     // isCorrect always is True 
     Console.WriteLine(isCorrect); 
     Console.ReadKey(); 
    } 
} 

ответ

0

В проекте MVC признается атрибут MetaDataType. Другие проекты нуждаются в небольшой помощи. Прежде чем приступать к проверке, вам необходимо зарегистрировать класс метаданных.

TypeDescriptor.AddProviderTransparent(new AssociatedMetadataTypeTypeDescriptionProvider(typeof(User), typeof(UserMetadata)), typeof(User)); 

Это должно позволить вам протестировать правильность вашего валидации.

В этом разделе содержится более подробная информация по этому вопросу от Джереми Грюнвальда ->Validate data using DataAnnotations with WPF & Entity Framework