.NET: атрибуты DataAnnotation в целом - PullRequest
3 голосов
/ 30 октября 2009

ASP.NET MVC 2 будет поддерживать проверку на основе DataAnnotation атрибутов, подобных этому:

public class User
{
    [Required]
    [StringLength(200)]
    public string Name { get; set; }
}

Как проверить, что текущее состояние модели действительно с использованием только чистого .NET (без использования привязки MVC, методов контроллера и т.

В идеале это был бы один метод:

bool IsValid(object model);

1 Ответ

7 голосов
/ 30 октября 2009

Этот пример кода взят из блога Стива Сандерсона о xVal (который использует атрибут DataAnnotationsAttribute для проверки свойств). По сути, вам просто нужно перечислить атрибуты с помощью отражения и проверить IsValid () :.

internal static class DataAnnotationsValidationRunner
{
    public static IEnumerable<ErrorInfo> GetErrors(object instance)
    {
        return from prop in TypeDescriptor.GetProperties(instance).Cast<PropertyDescriptor>()
               from attribute in prop.Attributes.OfType<ValidationAttribute>()
               where !attribute.IsValid(prop.GetValue(instance))
               select new ErrorInfo(prop.Name, attribute.FormatErrorMessage(string.Empty), instance);
    }
}
...