zoukankan      html  css  js  c++  java
  • 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(5, 30).WithMessage("样式类名字符长度在【5】至【30】之间!");
            }
        }

    对于如何写验证表达式可以百度FluentValidation验证,会有很多教程,这里就不再多说。

    构造好了实体FluentValidation验证类并设置了验证表达式后,框架会在保存前自动调用FluentValidation验证

    针对FluentValidation验证,在Rookey.Frame.Operate.BaseCommonOperate.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验证就介绍到此地,下次介绍其他验证方式,祝大家生活愉快!

  • 相关阅读:
    C++ using namespace std详解
    FlexEdit强大的文本编辑器(免费的!)
    串口扩展方案总结
    LED数码引脚图
    串口扩展方案总结
    C++ using namespace std详解
    Digital Mars Compiler简介及使用
    Digital Mars Compiler简介及使用
    poj1018
    poj3536
  • 原文地址:https://www.cnblogs.com/rookey/p/5709690.html
Copyright © 2011-2022 走看看