使用FluentValidation添加数据验证

最近开始研究nopCommerce框架,发现其验证使用FluentValidation组件进行Model验证,很是方便。对于Model验证的问题一直都困扰着我,既不想在实体模型上加特性,加个ViewModel的话,WebAPI要用也不好复用,也不太想放在Service层,放在Service层的话,还要引用MVC及其他MVC相关,个人感觉不好。现在有了FluentValidation,我觉得至少以上问题可以更好的解决了。以下就介绍下如何使用FluentValidation。

1     NuGet引用

通过NuGet 获取 FluentValidation的包即可,如需要整合进MVC,则引用FluentValidation.MVC5即可。

使用FluentValidation添加数据验证_第1张图片

2     添加实体模型及验证

添加一个用户实体。

使用FluentValidation添加数据验证_第2张图片

为实体添加验证。

使用FluentValidation添加数据验证_第3张图片

代码进行验证

使用FluentValidation添加数据验证_第4张图片

验证结果如下

使用FluentValidation添加数据验证_第5张图片

可以看出,如次可以实现与加特性一样的验证功能,且不依赖于MVC。不过对于验证消息的编写,似乎不能像特性那么方便,特性可以如下方式,使用占位符,这点没特性好使。

使用FluentValidation添加数据验证_第6张图片

3     根据条件进行是否验证

FluentValidation可以根据条件进行是否对属性进行验证,代码如下:

使用FluentValidation添加数据验证_第7张图片

只有Age>18的同时,才会对Name 的长度进行验证。不过如果整合MVC和unobtrusive的话,并不能在前端进行判断,还是得到后台。

4     整合MVC进行前端验证

    配置FluentValidation 模型验证为默认的 ASP.NET MVC 模型验证,并在模型上加上Validator特性,即可和特性一样在前端进行验证。

使用FluentValidation添加数据验证_第8张图片

使用FluentValidation添加数据验证_第9张图片

但在之前也说了,主要就是不想在实体加任何东西,才不用特性,如果要Validator,那和加验证特性也无差别了,所以使用注入的方式,可以很好的实现。

5     整合Autofac进行Ioc注入

使用FluentValidation添加数据验证_第10张图片

使用FluentValidation添加数据验证_第11张图片

你可能感兴趣的:(C#及.NET)