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验证组件.那里只是概述了一下,并没有对其使用和强大功能做深入研究 ...
随机推荐
- IOS方形头像如何变成圆形
方法一:直接使用UIView对应图层的cornerRadius self.layer.cornerRadius = CGRectGetWidth(self.bounds)/2.f; self. ...
- CF&&CC百套计划2 CodeChef December Challenge 2017 Chef and Hamming Distance of arrays
https://www.codechef.com/DEC17/problems/CHEFHAM #include<cstdio> #include<cstring> #incl ...
- windows git gui右键sublime打开当前文件编辑
git安装目录\Git\libexec\git-core\git-gui.tcl的 proc create_common_diff_popup 下追加: $ctxm add command \ -la ...
- github pages 正确访问方式
❌ http://username.github.io ✅ http://username.github.io. github pages 绑定域名后,由于浏览器dns缓存,需要重启一下
- 配置SpringBoot-从日志系统配置说起
大小系统都需要打日志. 系统在不同环境下对日志的配置要求是不一样的 比如 开发本地: 直接输出到控制台 生产环境: 输出到文件或者额外的日志收集系统, 比如 graylog. (本文不探讨具体日志系统 ...
- 【Linux 命令】sed 命令
文章转载自:https://www.jianshu.com/p/779f40985b20 文本分隔:------ # 在每一行后面增加一空行. sed G # 在每一行后面增加两行空行. sed &q ...
- JQuery获取被选中的checkbox的value值
文章源头:http://www.cnblogs.com/td960505/p/6123510.html 以下为使用JQuery获取input checkbox被选中的值代码: <html> ...
- C++ Qt多线程 TcpSocket服务器实例
服务器: incomming incomming.pro #------------------------------------------------- # # Project created ...
- Oracle 11.2.0.4在线(Online mode)打补丁14084247解决WRH$_ACTIVE_SESSION_HISTORY不会自动切割的问题
安装了Oracle Database Release 11.2.0.4之后,发现WRH$_ACTIVE_SESSION_HISTORY始终不会自动分割删除, 后来才发现需要应用补丁:14084 ...
- 关于new Handler()与new Handler(Looper.getMainLooper())区别
如果你不带参数的实例化:Handler handler=new Handler();那么这个会默认用当前线程的Looper对象. 一般而言,如果你的Handler是要用来刷新UI的,那么就需要在主线程 ...