之前在博客园有幸从网友那里得知一个C#的模型验证组件(哈 不知道这样表述正确不),组件的功能比较简单,主要是实现了对Model的验证,例如验证用户名是否为空,密码长度是不是多余6个字符,当然还有其他更加灵活的的验证方法。这里介绍给大家知道一下!

该组件的名称叫“FluentValidation”,顾名思义——“流畅验证”(- -!)。 下面看一段官方网站上面给出的代码就知道为什么“流畅”了。代码如下:

  1. using FluentValidation;
  2. public class CustomerValidator: AbstractValidator<Customer> {
  3. public CustomerValidator() {
  4. RuleFor(customer => customer.Surname).NotEmpty();
  5. RuleFor(customer => customer.Forename).NotEmpty().WithMessage("Please specify a first name");
  6. RuleFor(customer => customer.Company).NotNull();
  7. RuleFor(customer => customer.Discount).NotEqual(0).When(customer => customer.HasDiscount);
  8. RuleFor(customer => customer.Address).Length(20, 250);
  9. RuleFor(customer => customer.Postcode).Must(BeAValidPostcode).WithMessage("Please specify a valid postcode");
  10. }
  11. private bool BeAValidPostcode(string postcode) {
  12. // custom postcode validating logic goes here
  13. }
  14. }
  15. Customer customer = new Customer();
  16. CustomerValidator validator = new CustomerValidator();
  17. ValidationResult results = validator.Validate(customer);
  18. bool validationSucceeded = results.IsValid;
  19. IList<ValidationFailure> failures = results.Errors;

如果使用过ASP.NET MVC2.0或者以上版本的同学应该对这种代码觉得很熟悉^—^

目前该组件到了2.0版本,感觉我知道的比较晚了,下面给出相关链接:

文档不多不过写得比较详细,组件的可扩展性也比较强!一个优秀的组件最大的特点就是功能走接口,扩展靠继承,FluentValidation很华丽地做到这一点!在多层结构的项目中FluentValidation可以很好地并且方便地对模型传参进行差错校验,不止可以减少代码量,重要的一点是统一了代码风格!

模型验证组件——FluentValidation的更多相关文章

  1. asp.net mvc 模型验证组件——FluentValidation

    asp.net mvc 模型验证组件——FluentValidation 示例 using FluentValidation; public class CustomerValidator: Abst ...

  2. 模型验证组件 FluentValidation

    FluentValidation 是 .NET 下的模型验证组件,和 ASP.NET MVC 基于Attribute 声明式验证的不同处,其利用表达式语法链式编程,使得验证组件与实体分开.正如 Flu ...

  3. .NET Core中的验证组件FluentValidation的实战分享

    今天有人问我能不能出一篇FluentValidation的教程,刚好今天在实现我们的.NET Core实战项目之CMS的修改密码部分的功能中有用到FluentValidation,所以就以修改用户密码 ...

  4. 验证组件——FluentValidation

          FluentValidation FluentValidation是与ASP.NET DataAnnotataion Attribute验证实体不同的数据验证组件,提供了将实体与验证分离开 ...

  5. 验证组件FluentValidation的使用示例

    官方文档:https://fluentvalidation.net/start#complex-properties 示例Demo:https://github.com/DavideYang125/F ...

  6. FluentValidation 模型验证

    FluentValidation 是 .NET 下的模型验证组件,和 ASP.NET MVC 基于Attribute 声明式验证的不同处,其利用表达式语法链式编程,使得验证组件与实体分开.正如 Flu ...

  7. 【翻译】asp.net core中使用FluentValidation来进行模型验证

    asp.net core中使用FluentValidation FluentValidation 可以集成到asp.net core中.一旦启用,MVC会在通过模型绑定将参数传入控制器的方法上时使用F ...

  8. 【翻译】FluentValidation验证组件的使用

    由于本文是翻译,所以将原文原原本本的搬上来,大家看原文有什么不懂的也可以对照这里. 给出地址:https://fluentvalidation.net/ FluentValidation fluent ...

  9. .NET平台开源项目速览(10)FluentValidation验证组件深入使用(二)

    在上一篇文章:.NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(一) 中,给大家初步介绍了一下FluentValidation验证组件的使用情况.文章从构建间的验证器开 ...

随机推荐

  1. How much training data do you need?

    How much training data do you need?   //@樵夫上校: 0. 经验上,10X规则(训练数据是模型参数量的10倍)适用与大多数模型,包括shallow networ ...

  2. 关于31天App教程示例中一些因SDK版本而出现的问题(转)

    由于国外那个知名的31天案例教程比较老,所用官方API是2008年时的2.X,所以在现在的Xcode3-4之后或多或少都有编译警告和错误信息.必须做些适应iOS版本的代码更改才能顺利编译通过. Day ...

  3. Hibernate4 执行存储过程

    Hibernate3.3.2版本中getSession().connection()已被弃用,hibernate4中官方推荐使用Session doWork()方法进行jdbc操作 当Hibernat ...

  4. cocos基础教程(12)点击交互的三种处理

    1.概述 游戏也好,程序也好,只有能与用户交互才有意义.手机上的交互大致可以分为两部分:点击和输入.其中点击更为重要,几乎是游戏中全部的交互.在Cocos2d-x 3.0中,更改了dispatch机制 ...

  5. 备份还原mysql数据库

    Windows下cmd命令行中备份还原mysql数据库 先cmd 上cd  到mysql的安装bin目录下,然后再运行下面的命令. 例如:cd C:\Program Files\MySQL\MySQL ...

  6. Unity3D模型的细致纹理问题解决办法

    http://hunterwang.diandian.com/post/2012-09-28/40039798509 也许有人也遇到过同样的问题,也许解决方式不同,我来介绍一下偶尔尝试发现的解决办法. ...

  7. unity3d 参考坐标系

    原地址:http://www.cnblogs.com/88999660/archive/2013/04/01/2993844.html 参考坐标系(Reference Coordinate Syste ...

  8. ruby开发过程中的小总结

    (1)建表的时候注意保留字 在新建的表里无法插入一列的值, 报错信息是:Can't mass-assign protected attributes,这一列的列名是type,查了一下发现是因为type ...

  9. [BZOJ1067][SCOI2007]降雨量

    [BZOJ1067][SCOI2007]降雨量 试题描述 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”.它的含义是X年的降雨量不超过Y年,且对于任意 Y<Z<X,Z年的降雨量严格 ...

  10. poj 3026 bfs+prim Borg Maze

    Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9718   Accepted: 3263 Description The B ...