Ejemplo n.º 1
0
        private ProfileValidationRuleMetadata GetFieldValidator(Type validatorType, MemberInfo memberInfo)
        {
            if (!(memberInfo.GetCustomAttributes(validatorType).FirstOrDefault() is ValidationAttribute
                  validationAttribute))
            {
                return(null);
            }

            var validatorDescription = DataAnnotationAttrsMap[validatorType];

            var validator = new ProfileValidationRuleMetadata(validationAttribute)
            {
                Type = validatorDescription.ClientSideTypeNaming,
                NeedsInternalLocalization =
                    string.IsNullOrEmpty(validationAttribute.ErrorMessageResourceName) ||
                    validationAttribute.ErrorMessageResourceType == null
            };

            if (validator.NeedsInternalLocalization)
            {
                validationAttribute.ErrorMessage = validatorDescription.DefaultErrorMessage;
            }

            validator.ErrorKey = validationAttribute.ErrorMessage;


            foreach (var prop in validatorType.GetProperties())
            {
                if (BaseValidationAttributeProperties.Contains(prop.Name))
                {
                    continue;
                }

                var propValue = prop.GetValue(validationAttribute, null);
                if (propValue != null)
                {
                    validator.Parameters.Add(prop.Name.ToCamelCase(), propValue.ToString());
                }
            }

            return(validator);
        }
Ejemplo n.º 2
0
        private ProfileFieldMetadata GetField(MemberInfo memberInfo)
        {
            var displayAttr = memberInfo.GetCustomAttributes <OwnIdFieldAttribute>().FirstOrDefault();
            var typeAttr    = memberInfo.GetCustomAttributes <OwnIdFieldTypeAttribute>().FirstOrDefault();

            var fieldData = new ProfileFieldMetadata
            {
                Label       = displayAttr?.Label ?? memberInfo.Name,
                Placeholder = displayAttr?.Placeholder ?? string.Empty,
                Key         = memberInfo.Name,
                Type        = (typeAttr?.FieldType ?? ProfileFieldType.Text).ToString().ToLowerInvariant(),
                Validators  = new List <ProfileValidationRuleMetadata>()
            };

            foreach (var type in DataAnnotationAttrsMap.Keys)
            {
                var validator = GetFieldValidator(type, memberInfo);

                if (validator != null)
                {
                    fieldData.Validators.Add(validator);
                }
            }

            if (typeAttr != null && typeAttr.FieldType != ProfileFieldType.Text)
            {
                var validator = new ProfileValidationRuleMetadata(typeAttr)
                {
                    Type     = fieldData.Type,
                    ErrorKey = Constants.DefaultInvalidFormatErrorMessage,
                    NeedsInternalLocalization =
                        string.IsNullOrEmpty(typeAttr.ErrorMessageResourceName) ||
                        typeAttr.ErrorMessageResourceType == null
                };

                fieldData.Validators.Add(validator);
            }

            return(fieldData);
        }