模型验证组件——FluentValidation
之前在博客园有幸从网友那里得知一个C#的模型验证组件(哈 不知道这样表述正确不),组件的功能比较简单,主要是实现了对Model的验证,例如验证用户名是否为空,密码长度是不是多余6个字符,当然还有其他更加灵活的的验证方法。这里介绍给大家知道一下,昨天我试用了一下感觉很不错^_^
该组件的名称叫“FluentValidation”,顾名思义——“流畅验证”(- -!)。
下面看一段官方网站上面给出的代码就知道为什么“流畅”了。代码如下:
using FluentValidation; public class CustomerValidator: AbstractValidator<Customer> { public CustomerValidator() { RuleFor(customer => customer.Surname).NotEmpty(); RuleFor(customer => customer.Forename).NotEmpty().WithMessage("Please specify a first name"); RuleFor(customer => customer.Company).NotNull(); RuleFor(customer => customer.Discount).NotEqual(0).When(customer => customer.HasDiscount); RuleFor(customer => customer.Address).Length(20, 250); RuleFor(customer => customer.Postcode).Must(BeAValidPostcode).WithMessage("Please specify a valid postcode"); } private bool BeAValidPostcode(string postcode) { // custom postcode validating logic goes here } } Customer customer = new Customer(); CustomerValidator validator = new CustomerValidator(); ValidationResult results = validator.Validate(customer); bool validationSucceeded = results.IsValid; IList<ValidationFailure> failures = results.Errors;如果使用过ASP.NET MVC2.0或者以上版本的同学应该对这种代码觉得很熟悉^—^
目前该组件到了2.0版本,感觉我知道的比较晚了,下面给出相关链接:
- FluentValidation首页地址:http://fluentvalidation.codeplex.com/
- FluentValidation下载地址:http://fluentvalidation.codeplex.com/releases/view/59101
- FluentValidation文档地址:http://fluentvalidation.codeplex.com/documentation
文档不多不过写得比较详细,组件的可扩展性也比较强!一个优秀的组件最大的特点就是功能走接口,扩展靠继承,FluentValidation很华丽地做到这一点!在多层结构的项目中FluentValidation可以很好地并且方便地对模型传参进行差错校验,不止可以减少代码量,重要的一点是统一了代码风格!