你的位置:首页 > ASP.net教程

[ASP.net教程]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.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验证就介绍到此地,下次介绍其他验证方式,祝大家生活愉快!