.NET: attributi DataAnnotation in generale
-
22-07-2019 - |
Domanda
ASP.NET MVC 2 supporterà la convalida basata sugli attributi DataAnnotation come questo:
public class User
{
[Required]
[StringLength(200)]
public string Name { get; set; }
}
Come posso verificare che uno stato del modello corrente sia valido usando solo .NET puro (non usando l'associazione MVC, i metodi del controller, ecc.)?
Idealmente, sarebbe un singolo metodo:
bool IsValid(object model);
Soluzione
Questo esempio di codice è tratto da blog su xVal (che utilizza l'attributo DataAnnotations per validare le proprietà). Fondamentalmente, devi solo enumerare gli attibutes usando reflection e controllare 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);
}
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow