Beispiel #1
0
 protected virtual void NormalizeValidationAttrbute(ValidationAttribute validationAttribute)
 {
     if (validationAttribute.ErrorMessage == null)
     {
         ValidationAttributeHelper.SetDefaultErrorMessage(validationAttribute);
     }
 }
        public void ExpressionPassesValidation()
        {
            expressionTestNode.Expression = "NOT I:?";

            ValidateNodeCommand cmd = new ValidateNodeCommand(ServiceProvider);

            cmd.Execute(expressionTestNode);

            Assert.AreEqual(0, ValidationAttributeHelper.GetValidationErrorsCount(ServiceProvider));
        }
        public void NonExpressionFailsValidation()
        {
            string nonExpression = "hello, this doesnt make sense";

            expressionTestNode.Expression = nonExpression;

            ValidateNodeCommand cmd = new ValidateNodeCommand(ServiceProvider);

            cmd.Execute(expressionTestNode);

            Assert.AreEqual(1, ValidationAttributeHelper.GetValidationErrorsCount(ServiceProvider));
        }
Beispiel #4
0
 private static string GetDefaultErrorMessage(ValidationAttribute validationAttribute)
 {
     if (validationAttribute is StringLengthAttribute stringLengthAttribute && stringLengthAttribute.MinimumLength != 0)
     {
         var nullable = ValidationAttributeHelper.ValidationAttributeCustomErrorMessageSetProperty.GetValue((object)validationAttribute) as bool?;
         var flag     = true;
         if (!(nullable.GetValueOrDefault() == flag & nullable.HasValue))
         {
             return(ValidationAttributeHelper.SetErrorMessagePlaceholders("The field {0} must be a string with a minimum length of {2} and a maximum length of {1}."));
         }
     }
     return(ValidationAttributeHelper.SetErrorMessagePlaceholders(ValidationAttributeHelper.ValidationAttributeErrorMessageStringProperty.GetValue((object)validationAttribute) as string));
 }
Beispiel #5
0
        public override ValidationResult GetOrDefault(ValidationAttribute validationAttribute, object validatingObject, ValidationContext validationContext)
        {
            var resourceSource = _abpMvcDataAnnotationsLocalizationOptions.AssemblyResources.GetOrDefault(validationContext.ObjectType.Assembly);

            if (resourceSource == null)
            {
                return(base.GetOrDefault(validationAttribute, validatingObject, validationContext));
            }

            if (validationAttribute.ErrorMessage == null)
            {
                ValidationAttributeHelper.SetDefaultErrorMessage(validationAttribute);
            }

            if (validationAttribute.ErrorMessage != null)
            {
                validationAttribute.ErrorMessage = _stringLocalizerFactory.Create(resourceSource)[validationAttribute.ErrorMessage];
            }

            return(base.GetOrDefault(validationAttribute, validatingObject, validationContext));
        }
Beispiel #6
0
    protected virtual void Validate(ValidatorEventArgs e)
    {
        e.Status = ValidationStatus.Success;

        var validationAttributes = PropertyInfo.GetValidationAttributes();
        var validationContext    = new ValidationContext(Entity)
        {
            DisplayName = PropertyInfo.Name,
            MemberName  = PropertyInfo.Name
        };

        foreach (var validationAttribute in validationAttributes)
        {
            var result = validationAttribute.GetValidationResult(e.Value, validationContext);
            if (result == ValidationResult.Success || result == null)
            {
                continue;
            }

            var errorMessage = result.ErrorMessage;
            if (LH != null)
            {
                var formattedErrorMessage = GetDefaultErrorMessage(validationAttribute);
                var errorMessageString    = ValidationAttributeHelper.RevertErrorMessagePlaceholders(formattedErrorMessage);
                var errorMessageArguments = ValidationMessageLocalizerAttributeFinder.FindAll(errorMessage, errorMessageString)
                                            ?.OrderBy(x => x.Index)
                                            ?.Select(x => x.Argument);

                errorMessage = LH.Localize(errorMessageString, errorMessageArguments);
            }

            e.MemberNames = result.MemberNames;
            e.Status      = ValidationStatus.Error;
            e.ErrorText   = errorMessage;
            break;
        }
    }
Beispiel #7
0
        protected virtual void AddExtraPropertyValidationsAttributes(ViewContext viewContext, ModelExplorer modelExplorer, IDictionary <string, string> attributes)
        {
            var nameAttribute = attributes.GetOrDefault("name");

            if (nameAttribute == null)
            {
                return;
            }

            var extraPropertyName = ExtraPropertyBindingHelper.ExtractExtraPropertyName(nameAttribute);

            if (extraPropertyName == null)
            {
                return;
            }

            //TODO: containerName can be null on controller actions..?
            var containerName = ExtraPropertyBindingHelper.ExtractContainerName(nameAttribute);

            if (containerName == null)
            {
                return;
            }

            if (modelExplorer.Container?.ModelType == null)
            {
                return;
            }

            var extensibleObjectType = modelExplorer.Container.ModelType
                                       .GetProperty(containerName, BindingFlags.Instance | BindingFlags.Public)
                                       ?.PropertyType;

            if (extensibleObjectType == null)
            {
                return;
            }

            var extensionPropertyInfo = ObjectExtensionManager.Instance.GetPropertyOrNull(
                extensibleObjectType,
                extraPropertyName
                );

            if (extensionPropertyInfo == null)
            {
                return;
            }

            if (modelExplorer.Metadata is DefaultModelMetadata metadata)
            {
                metadata.DisplayMetadata.DisplayName =
                    () => extensionPropertyInfo.GetLocalizedDisplayName(_stringLocalizerFactory);
            }

            foreach (var validationAttribute in extensionPropertyInfo.GetValidationAttributes())
            {
                var validationContext = new ClientModelValidationContext(
                    viewContext,
                    modelExplorer.Metadata,
                    _metadataProvider,
                    attributes
                    );

                if (validationAttribute.ErrorMessage == null)
                {
                    ValidationAttributeHelper.SetDefaultErrorMessage(validationAttribute);
                }

                var validationAttributeAdapter = _validationAttributeAdapterProvider.GetAttributeAdapter(
                    validationAttribute,
                    _validationStringLocalizer
                    );

                validationAttributeAdapter?.AddValidation(validationContext);
            }
        }