Example #1
0
        /// <summary>
        /// 全エラー取得
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public static List <ValidationResult> GetAllErrors(this ForValidation forValidation)
        {
            var ret = new List <ValidationResult>();

            ret.AddRange(forValidation.GetAllPropsErrors());
            if (ret.Count() == 0)
            {
                ret.AddRange(forValidation.GetClassLevelErrors());
            }
            return(ret);
        }
Example #2
0
        /// <summary>
        /// 全プロパティの検証エラー取得
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public static List <ValidationResult> GetAllPropsErrors(this ForValidation forValidation)
        {
            var ret = new List <ValidationResult>();
            var ctx = forValidation.Context;

            foreach (var prop in forValidation.GetTargetPropValues().Keys)
            {
                ctx.MemberName = prop;
                ret.AddRange(forValidation.GetPropErrors(prop));
            }
            return(ret);
        }
Example #3
0
        /// <summary>
        /// クラスレベルの検証エラー取得
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public static List <ValidationResult> GetClassLevelErrors(this ForValidation forValidation)
        {
            var context     = forValidation.Context;
            var ret         = new List <ValidationResult>();
            var value       = context.ObjectInstance;
            var validations = forValidation.GetClassValidationAttributes();

            foreach (var attr in validations)
            {
                ret.AddErrors(context, attr, value);
            }
            return(ret);
        }
Example #4
0
        /// <summary>
        /// 全プロパティの最優先検証エラー取得
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public static List <ValidationResult> GetAllFisrtValidationErrors(this ForValidation forValidation)
        {
            var firsts  = ValidationConfig.FirstValidationAttributesProvider.Invoke();
            var context = forValidation.Context;
            var ret     = new List <ValidationResult>();

            foreach (var prop in forValidation.GetTargetPropValues().Keys)
            {
                var value = forValidation.GetTargetPropValue(prop);

                var firstVAs = forValidation.GetValidationAttributes(prop).Where(va => firsts.Contains(va.GetType()));
                foreach (var va in firstVAs)
                {
                    var ctx = new ValidationContext(context.ObjectInstance, context, context.Items);
                    ctx.MemberName = prop;
                    ret.AddErrors(ctx, va, value);
                }
            }
            return(ret);
        }
Example #5
0
        /// <summary>
        /// プロパティの検証エラー取得
        /// </summary>
        /// <param name="forValidation"></param>
        /// <param name="propertyName"></param>
        /// <param name="displayName"></param>
        /// <returns></returns>
        public static List <ValidationResult> GetPropErrors(this ForValidation forValidation, string propertyName, string displayName)
        {
            var ret         = new List <ValidationResult>();
            var validations = forValidation.GetValidationAttributes(propertyName);

            if (validations.Count() == 0)
            {
                return(ret);
            }

            var context = forValidation.Context;
            var ctx     = new ValidationContext(context.ObjectInstance, context, context.Items);

            ctx.MemberName = propertyName;
            if (!string.IsNullOrEmpty(displayName))
            {
                ctx.DisplayName = displayName;
            }
            var value = forValidation.GetTargetPropValue(propertyName);


            // 最優先チェック
            var firsts = ValidationConfig.FirstValidationAttributesProvider.Invoke();

            foreach (var attr in validations.Where(va => firsts.Contains(va.GetType())))
            {
                ret.AddErrors(ctx, attr, value);
            }
            if (ret.Count() > 0)
            {
                return(ret);
            }


            // その他
            foreach (var attr in validations.Where(va => !firsts.Contains(va.GetType())))
            {
                ret.AddErrors(ctx, attr, value);
            }
            return(ret);
        }
Example #6
0
 /// <summary>
 /// プロパティの検証エラー取得
 /// </summary>
 /// <param name="forValidation"></param>
 /// <param name="propertyName"></param>
 public static List <ValidationResult> GetPropErrors(this ForValidation forValidation, string propertyName)
 {
     return(forValidation.GetPropErrors(propertyName, string.Empty));
 }