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验证组件.那里只是概述了一下,并没有对其使用和强大功能做深入研究 ...
随机推荐
- jsp中jsp:forward 与 redirect区别
部分转载:http://hi.baidu.com/168zlf/item/2f4b2ad4351b881c20e2500c 在网上看到一些帖子,总结了一些区别,可以从以下几个方面来看: 1.从地址栏显 ...
- 【转】 jquery easyui Tab 引入页面的问题
原地址:http://blog.csdn.net/superdog007/article/details/8225518 jQuery Easyui 的tabs插件有两种方式加载某个tab(标签页)上 ...
- react 带参数事件方法不立即执行
handleClick:()=>{this.to_step('to_step3_2')}}
- zookeeper集群查看状态时报错Error contacting service. It is probably not running的一些坑以及解决办法
最近在搭建mq集群时候需要用到,zookeeper,可是启动的时候显示成功了,查看状态的时候却报错了: 碰到这个问题也是研究好好半天才解决,这里就总结出一个快速解决办法! 首先,必须看日志: 报错信息 ...
- 渗透测试的WINDOWS NTFS技巧集合
译者:zzzhhh 这篇文章是来自SEC Consult Vulnerability Lab的ReneFreingruber (@ReneFreingruber),分享了过去几年从各种博客文章中收集的 ...
- IIC串行总线的组成及其工作原理
------------------最近项目上用到了一款美信的DS1308RTC芯片,由于是挂在了Zynq的PS MIO上,需要软件人员协助才能测试:觉得太麻烦了,想通过飞线,然后在Vivado中调用 ...
- Mysql中truncate table和delete语句的区别
Mysql中的truncate table和delete语句都可以删除表里面所有数据,但是在一些情况下有些不同! 例子: truncate table gag; (1)truncate table删除 ...
- AngularJS中ng-class使用方法
转自:https://blog.csdn.net/jumtre/article/details/50802136 其他博文ng-class使用方法:https://blog.csdn.net/sina ...
- openlayers常用操作
1.坐标转换 根据当前坐标系与目标坐标系进行转换ol.proj.transform(coordinate, source, destination); //coordinate:数组:source: ...
- 数据库-mysql数据操作
一:mysql 数据的插入 语法 以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法: INSERT INTO table_name ( field1, field2,...f ...