Rookey.Frame之实体FluentValidation验证
昨天给大家介绍了Rookey.Frame框架的实体设计,今天继续跟大家分享实体的FluentValidation验证,在Rookey.Frame框架中可以设置多种验证方式:FluentValidation验证、主键字段(PrimaryKeyFields字段)验证、表单字段验证、自定义验证,今天主要介绍FluentValidation验证。
实体FluentValidation验证需要新建一个实体FluentValidation类,实体验证类命名有要求,命名必须为类名+Validator,并且继承类AbstractValidator<T>,其中T为实体类,以本框架中图标管理实体类为例说明,请看如下代码:
/// <summary>
/// 图标管理验证
/// </summary>
public class Sys_IconManageValidator : AbstractValidator<Sys_IconManage>
{
/// <summary>
/// 构造函数
/// </summary>
public Sys_IconManageValidator()
{
Expression<Func<Sys_IconManage, bool>> exp = x => !x.StyleClassName.StartsWith("icon-");
RuleFor(x => x.StyleClassName).Length(, ).WithMessage("样式类名字符长度在【5】至【30】之间!");
}
}
对于如何写验证表达式可以百度FluentValidation验证,会有很多教程,这里就不再多说。
构造好了实体FluentValidation验证类并设置了验证表达式后,框架会在保存前自动调用FluentValidation验证

针对FluentValidation验证,在Rookey.Frame.Operate.Base\CommonOperate.cs中已经封装了对FluentValidation验证的方法,需要时直接调用即可
/// <summary>
/// FluentValidation验证
/// </summary>
/// <param name="moduleId">模块Id</param>
/// <param name="model">实体对象</param>
/// <returns></returns>
public static string FluentVerify(Guid moduleId, object model)
{
Type modelType = GetModelType(moduleId);
//FluentValidation验证
Type fluentValidationType = GetFluentValidationModelType(moduleId);
if (fluentValidationType != null) //FluentValidation验证类型存在
{
//实例化验证对象
object obj = Activator.CreateInstance(fluentValidationType);
MethodInfo method = fluentValidationType.GetMethod("Validate", new Type[] { modelType });
//反射执行方法
object executedObj = method.Invoke(obj, new object[] { model });
ValidationResult validateResult = executedObj as ValidationResult;
if (validateResult != null && !validateResult.IsValid)
{
string errMsg = string.Join(",", validateResult.Errors.Select(x => x.ErrorMessage));
return errMsg;
}
}
return string.Empty;
}
今天FluentValidation验证就介绍到此地,下次介绍其他验证方式,祝大家生活愉快!
Rookey.Frame之实体FluentValidation验证的更多相关文章
- Rookey.Frame之实体类
上周跟大家分享了Rookey.Frame框架的初始化功能,今天继续给大家介绍实体类的设计. 先看下下面菜单实体示例代码: using Rookey.Frame.EntityBase; using Ro ...
- Rookey.Frame之实体表单验证
昨天给大家介绍了实体FluentValidation验证,今天继续给大家介绍表单验证,在Rookey.Frame框架中,表单验证有PrimaryKeyFields字段验证.唯一验证.必填验证.常用验证 ...
- ASP.NET MVC中使用FluentValidation验证实体
1.FluentValidation介绍 FluentValidation是与ASP.NET DataAnnotataion Attribute验证实体不同的数据验证组件,提供了将实体与验证分离开来的 ...
- ASP.NET MVC中使用FluentValidation验证实体(转载)
1.FluentValidation介绍 FluentValidation是与ASP.NET DataAnnotataion Attribute验证实体不同的数据验证组件,提供了将实体与验证分离开来的 ...
- Rookey.Frame企业级极速开发框架
项目详细介绍 Rookey.Frame是一套基于.NET MVC + easyui的企业级极速开发框架,支持简单逻辑模块零代码编程.支持工作流(BPM).支持二次开发,具有高扩展性.高复用性.高伸缩性 ...
- Rookey.Frame v1.0快速开发平台-整体介绍
Rookey.Frame v1.0是一套基于.NET MVC的极速开发框架,支持简单逻辑模块零代码编程.支持二次开发,具有高扩展性.高复用性.高伸缩性. 框架特点 (1)简单逻辑模块实现零代码编程,通 ...
- Rookey.Frame企业级快速开发框架开源了
Rookey.Frame是一套基于.NET MVC + easyui的企业级极速开发框架,支持简单逻辑模块零代码编程.支持工作流(BPM).支持二次开发,具有高扩展性.高复用性.高伸缩性:应广大网友要 ...
- Rookey.Frame之DAL工厂
昨天给大家介绍了表单验证功能,今天给大家介绍下Rookey.Frame框架的数据层工厂,由于Rookey.Frame框架ORM是基于servicestack.ormlite,很多朋友反映这个网上中文资 ...
- .NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(一)
在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,给大家初步介绍了一下FluentValidation验证组件.那里只是概述了一下,并没有对其使用和强大功能做深入研究 ...
随机推荐
- Kafka 0.8 Producer处理逻辑
Kafka Producer产生数据发送给Kafka Server,具体的分发逻辑及负载均衡逻辑,全部由producer维护. 1.Kafka Producer默认调用逻辑 1.1 默认Partiti ...
- [Luogu 2169] 正则表达式
[Luogu 2169] 正则表达式 感谢 0xis 推题. 记忆中很久没有过一遍写过一题了- 别被题目名称蒙骗!这不是正则表达式题目!和字符(串)处理一点关系都没有!这是个图论题啊喂! 题都没急,C ...
- 活学活用,CSS清除浮动的4种方法
清除浮动这个问题,做前端的应该再熟悉不过了,咱是个新人,所以还是记个笔记,做个积累,努力学习向大神靠近. CSS清除浮动的方法网上一搜,大概有N多种,用过几种,说下个人感受. 1.结尾处加空div标签 ...
- Chrome截长屏
本文地址:https://www.cnblogs.com/veinyin/p/9257833.html Chrome截取长屏一直是一个痛点,之前尝试过第三方截图工具,但是不是收费就是不怎么好用,今 ...
- HDU 4311 Meeting point-1 求一个点到其它点的曼哈顿距离之和
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4311 解题报告:在一个平面上有 n 个点,求一个点到其它的 n 个点的距离之和最小是多少. 首先不得不 ...
- Python Pool
我们在使用Python时,会经常需要使用多进程/多线程的情况,以便提高程序的运行效率,尤其是跟网络进行交互,如使用爬虫时.下面我们将简单看下Python的进程池的创建,map().apply_asyn ...
- 多页面应用_vue
vue框架 vue:解决前端大型应用的开发,将之前几十个.几百个.更多的HTML页面,集成为1个HTML页面(当页面应用) jQuery:前端方法库. bootstrap:UI组件库. angular ...
- sklearn评估模型的方法
一.acc.recall.F1.混淆矩阵.分类综合报告 1.准确率 第一种方式:accuracy_score # 准确率import numpy as np from sklearn.metrics ...
- JS设计模式——8.桥接模式
桥接模式的用途 在实现API的时候,桥接模式非常有用. 在设计一个JavaScript API的时候,可以用这个模式来弱化它与使用它的类和对象之间的耦合. 示例:事件监听器 桥接模式最常见和实际的应用 ...
- 解决多个python的兼容问题
方法1:将(安装路径和scripts)路径添加到系统环境变量,谁的顺序在前面谁就是默认的 方法2:修改python的名字,然后再终端输入比如python2或者python3