I'd like to use the data validation attributes in a library assembly, so that any consumer of the data can validate it without using a ModelBinder (in a console application, for instance). How can I do it?
Validation attributes let you specify the error message to be displayed for invalid input. For example: C# Copy. [StringLength(8, ErrorMessage = "Name length can't be more than 8.")]
Data annotations (available as part of the System. ComponentModel. DataAnnotations namespace) are attributes that can be applied to classes or class members to specify the relationship between classes, describe how the data is to be displayed in the UI, and specify validation rules.
Actually this is pretty cool. I used it in a WFP validation implementation recently. Most people end up writing lots of code using reflection to iterate the attributes, but there's a built in function for this.
var vc = new ValidationContext(myObject, null, null); return Validator.TryValidateObject(myObject, vc, null, true);
You can also validate attributes on a single named property. You can also optionally pass in a list in order to access the error messages :
var results = new List<ValidationResult>(); var vc = new ValidationContext(myObject, null, null) { MemberName = "UserName"}; var isValid = Validator.TryValidateProperty(value, vc, results); // get all the errors var errors = Array.ConvertAll(results.ToArray(), o => o.ErrorMessage);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With