Esempio n. 1
0
        public void Validate(Func <string, bool> isPropValidate = null)
        {
            foreach (var prop in Metadata.Properties)
            {
                if (isPropValidate != null && !isPropValidate(prop.PropertyName))
                {
                    continue;
                }

                CachedDataAnnotationsModelMetadata2 prop2 = prop as CachedDataAnnotationsModelMetadata2;
                if (prop2 != null)
                {
                    ValidateForProperty(prop2);
                }
            }
        }
Esempio n. 2
0
        private void ValidateForProperty(CachedDataAnnotationsModelMetadata2 prop2)
        {
            string propName       = prop2.PropertyName;
            string propLocaleName = LocaleHelper.Localizer.Get(string.Format("{0}_{1}", objTypeName, prop2.PropertyName), objAsmName);

            if (prop2.IsRequried())
            {
                string message = DAF.Core.Resources.Locale(o => o.Data_Requried);
                page.Validation.RequireField(propName, string.Format(message, propLocaleName));
            }

            StringLengthAttribute sl = prop2.Attributes.OfType <StringLengthAttribute>().FirstOrDefault();

            if (sl != null)
            {
                if (sl.MaximumLength > 0)
                {
                    string message = DAF.Core.Resources.Locale(o => o.Data_StringLengthRange);
                    page.Validation.Add(propName,
                                        Validator.StringLength(sl.MaximumLength, sl.MinimumLength,
                                                               string.Format(message, propLocaleName, sl.MinimumLength, sl.MaximumLength)));
                }
                else
                {
                    string message = DAF.Core.Resources.Locale(o => o.Data_StringLength);
                    page.Validation.Add(propName,
                                        Validator.StringLength(sl.MaximumLength, 0,
                                                               string.Format(message, propLocaleName, sl.MaximumLength)));
                }
            }

            RegularExpressionAttribute re = prop2.Attributes.OfType <RegularExpressionAttribute>().FirstOrDefault();

            if (re != null)
            {
                string message = DAF.Core.Resources.Locale(o => o.Data_Regex);
                page.Validation.Add(propName, Validator.Regex(re.Pattern, string.Format(message, propLocaleName)));
            }

            DataTypeAttribute dt = prop2.Attributes.OfType <DataTypeAttribute>().FirstOrDefault();

            if (dt != null)
            {
                string message = null;
                string regex   = null;
                switch (dt.DataType)
                {
                case DataType.Date:
                    regex   = @"\d{4}-?\d{2}-?\d{2}";
                    message = DAF.Core.Resources.Locale(o => o.Data_Regex);
                    break;

                default:
                    break;
                }
                if (!string.IsNullOrEmpty(regex))
                {
                    page.Validation.Add(propName, Validator.Regex(regex, string.Format(message, propLocaleName)));
                }
            }

            CompareAttribute ca = prop2.Attributes.OfType <CompareAttribute>().FirstOrDefault();

            if (ca != null)
            {
                string otherPropLocalName = LocaleHelper.Localizer.Get(string.Format("{0}_{1}", objTypeName, ca.OtherProperty), objAsmName);
                string message            = DAF.Core.Resources.Locale(o => o.Data_EqualsTo);
                page.Validation.Add(propName,
                                    Validator.EqualsTo(ca.OtherProperty,
                                                       string.Format(message, propLocaleName, otherPropLocalName)));
            }
        }