示例#1
0
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            var dictionary = value as IDictionary;

            if (dictionary == null)
            {
                return(ValidationResult.Success);
            }

            var compositeResults = new CompositeValidationResult($"Validation of '{validationContext.DisplayName}' failed.");

            foreach (DictionaryEntry entry in dictionary)
            {
                var enumerable = (entry.Value as IList);

                if (enumerable == null)
                {
                    throw new Exception($"Unable to unwrap the extension object.");
                }

                var context = new ValidationContext(enumerable, validationContext.ServiceContainer, null)
                {
                    DisplayName = GetAggregateExtensionDisplayName((string)entry.Key)
                };

                var enumerableValidationResult = _validateEnumerable.GetValidationResult(enumerable, context);

                if (enumerableValidationResult == ValidationResult.Success)
                {
                    continue;
                }

                if (enumerableValidationResult is CompositeValidationResult)
                {
                    compositeResults.AddResult(enumerableValidationResult);
                }
                else
                {
                    compositeResults.AddResult(new ValidationResult($"{context.DisplayName} ({entry.Key}): {enumerableValidationResult}"));
                }
            }

            if (compositeResults.Results.Any())
            {
                return(compositeResults);
            }

            // If we're still here, validation was successful
            return(ValidationResult.Success);
        }
示例#2
0
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            var dictionary = value as IDictionary;

            if (dictionary == null)
            {
                return(ValidationResult.Success);
            }

            var compositeResults = new CompositeValidationResult($"Validation of '{validationContext.DisplayName}' failed.");

            foreach (DictionaryEntry entry in dictionary)
            {
                var @object = (entry.Value as IList)?[0];

                if (@object == null)
                {
                    throw new Exception($"Unable to unwrap the extension object.");
                }

                var itemResults = new List <ValidationResult>();
                var context     = new ValidationContext(@object, validationContext.ServiceContainer, null);

                Validator.TryValidateObject(@object, context, itemResults, validateAllProperties: true);

                if (itemResults.Any())
                {
                    foreach (var itemResult in itemResults)
                    {
                        if (itemResult is CompositeValidationResult)
                        {
                            compositeResults.AddResult(itemResult);
                        }
                        else
                        {
                            var schemaProperCaseName = entry.Key;
                            compositeResults.AddResult(new ValidationResult($"{context.DisplayName} ({schemaProperCaseName}): {itemResult}"));
                        }
                    }
                }
            }

            if (compositeResults.Results.Any())
            {
                return(compositeResults);
            }

            // If we're still here, validation was successful
            return(ValidationResult.Success);
        }
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        this.ValidationContext = validationContext;
        var results = new List <ValidationResult>();

        try
        {
            var isIterable = this.IsIterable(value);
            if (isIterable)
            {
                int currentItemPosition = -1;
                foreach (var objectToValidate in value as IEnumerable <object> )
                {
                    currentItemPosition++;
                    results.AddRange(ValidationsForObject(objectToValidate, true, currentItemPosition));
                }
            }
            else
            {
                results = ValidationsForObject(value);
            }
            //Build a validation result
            List <string> memberNames = new List <string>();
            results.ForEach(r => memberNames.AddRange(r.MemberNames));
            var compositeResultsReturn = new CompositeValidationResult($"Validation for {validationContext.DisplayName} failed!", memberNames.AsEnumerable());
            results.ForEach(r => compositeResultsReturn.AddResult(r));
            return(compositeResultsReturn);
        }
        catch (Exception) { }
        return(ValidationResult.Success);
    }
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            // If no object present, do not fail validation (Required attribute should be present if the reference is required)
            if (value == null)
            {
                return(ValidationResult.Success);
            }

            var compositeResults = new CompositeValidationResult($"Validation of '{validationContext.DisplayName}' failed.");

            var itemResults = new List <ValidationResult>();
            var context     = new ValidationContext(value, null, null);

            Validator.TryValidateObject(value, context, itemResults, true);

            if (itemResults.Any())
            {
                foreach (var itemResult in itemResults)
                {
                    compositeResults.AddResult(
                        itemResult is CompositeValidationResult
                            ? itemResult
                            : new ValidationResult($"{context.DisplayName}: {itemResult}"));
                }
            }

            return(compositeResults.Results.Any()
                ? compositeResults
                : ValidationResult.Success);
        }
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            var enumerable       = value as IEnumerable;
            var compositeResults = new CompositeValidationResult(string.Format("Validation of '{0}' failed.", validationContext.DisplayName));

            if (enumerable == null)
            {
                return(ValidationResult.Success);
            }

            var i = 0;

            foreach (var item in enumerable)
            {
                var itemResults = new List <ValidationResult>();
                var context     = new ValidationContext(item, validationContext.ServiceContainer, null);

                Validator.TryValidateObject(item, context, itemResults, true);

                if (itemResults.Any())
                {
                    foreach (var itemResult in itemResults)
                    {
                        if (itemResult is CompositeValidationResult)
                        {
                            compositeResults.AddResult(itemResult);
                        }
                        else
                        {
                            compositeResults.AddResult(new ValidationResult(string.Format("{0}[{1}]: {2}", context.DisplayName, i, itemResult)));
                        }
                    }
                }

                i++;
            }

            if (compositeResults.Results.Any())
            {
                return(compositeResults);
            }

            // If we're still here, validation was successful
            return(ValidationResult.Success);
        }
        /// <summary>
        /// Validates the specified entity with respect to the current validation attribute.
        /// </summary>
        /// <param name="entity">The entity to validate.</param>
        /// <param name="validationContext">The context information about the validation operation.</param>
        /// <returns>
        /// An instance of the <see cref="T:System.ComponentModel.DataAnnotations.ValidationResult" /> class.
        /// </returns>
        protected override ValidationResult IsValid(object entity, ValidationContext validationContext)
        {
            var displayName = validationContext.DisplayName;
            var compositeResults = new CompositeValidationResult(string.Format("Validation for {0} failed!", displayName));

            if (entity is IEnumerable)
            {
                IEnumerable items = (IEnumerable)entity;

                var index = 0;
                foreach (var item in items)
                {
                    var validator = new DataAnnotationValidator();

                    validator.TryValidate(item);
                    var results = validator.ValidationResults;

                    if (results.Count != 0)
                    {
                        results.ForEach(x => compositeResults.AddResult(x, displayName, index));
                    }

                    index++;
                }

                return compositeResults;
            }
            else
            {
                var validator = new DataAnnotationValidator();

                validator.TryValidate(entity);
                var results = validator.ValidationResults;

                if (results.Count != 0)
                {
                    results.ForEach(x => compositeResults.AddResult(x, displayName));
                    return compositeResults;
                }
            }

            return ValidationResult.Success;
        }
示例#7
0
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            // If no object present, do not fail validation (Required attribute should be present if the reference is required)
            if (value == null)
            {
                return(ValidationResult.Success);
            }

            var compositeResults = new CompositeValidationResult(string.Format("Validation of '{0}' failed.", validationContext.DisplayName));

            var itemResults = new List <ValidationResult>();
            var context     = new ValidationContext(value, null, null);

            Validator.TryValidateObject(value, context, itemResults, true);

            if (itemResults.Any())
            {
                foreach (var itemResult in itemResults)
                {
                    if (itemResult is CompositeValidationResult)
                    {
                        compositeResults.AddResult(itemResult);
                    }
                    else
                    {
                        compositeResults.AddResult(new ValidationResult(string.Format("{0}: {1}", context.DisplayName, itemResult)));
                    }
                }
            }

            if (compositeResults.Results.Any())
            {
                return(compositeResults);
            }

            // If we're still here, validation was successful
            return(ValidationResult.Success);
        }
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            var dictionary = value as IDictionary;

            if (dictionary == null)
            {
                return(ValidationResult.Success);
            }

            var compositeResults = new CompositeValidationResult($"Validation of '{validationContext.DisplayName}' failed.");

            foreach (DictionaryEntry entry in dictionary)
            {
                var enumerable = (entry.Value as IList);

                if (enumerable == null)
                {
                    throw new Exception($"Unable to unwrap the extension object.");
                }

                var context = new ValidationContext(enumerable, null)
                {
                    DisplayName = GetAggregateExtensionDisplayName((string)entry.Key)
                };

                var enumerableValidationResult = _validateEnumerable.GetValidationResult(enumerable, context);

                if (enumerableValidationResult == ValidationResult.Success)
                {
                    continue;
                }

                compositeResults.AddResult(
                    enumerableValidationResult is CompositeValidationResult
                        ? enumerableValidationResult
                        : new ValidationResult($"{context.DisplayName} ({entry.Key}): {enumerableValidationResult}"));
            }

            return(compositeResults.Results.Any()
                ? compositeResults
                : ValidationResult.Success);

            string GetAggregateExtensionDisplayName(string extensionBagName)
            {
                var bagNameParts = SystemConventions.GetExtensionBagNameParts(extensionBagName);

                return($"{bagNameParts.PluralName} ({bagNameParts.SchemaProperCaseName})");
            }
        }
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        var collectionResults = new CompositeValidationResult(String.Format("Validation for {0} failed!",
                                                                            validationContext.DisplayName));
        var enumerable = value as IEnumerable;
        var validators = GetValidators().ToList();

        if (enumerable != null)
        {
            var index = 0;
            foreach (var val in enumerable)
            {
                var results = new List <ValidationResult>();
                var context = new ValidationContext(val, validationContext.ServiceContainer, null);
                if (ValidationType != null)
                {
                    Validator.TryValidateValue(val, context, results, validators);
                }
                else
                {
                    Validator.TryValidateObject(val, context, results, true);
                }
                if (results.Count != 0)
                {
                    var compositeResults =
                        new CompositeValidationResult(String.Format("Validation for {0}[{1}] failed!",
                                                                    validationContext.DisplayName, index));
                    results.ForEach(compositeResults.AddResult);
                    collectionResults.AddResult(compositeResults);
                }
                index++;
            }
        }
        if (collectionResults.Results.Any())
        {
            return(collectionResults);
        }
        return(ValidationResult.Success);
    }
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            var enumerable       = value as IEnumerable;
            var compositeResults = new CompositeValidationResult($"Validation of '{validationContext.DisplayName}' failed.");

            if (enumerable == null)
            {
                return(ValidationResult.Success);
            }

            var i = 0;

            foreach (var item in enumerable)
            {
                var itemResults = new List <ValidationResult>();
                var context     = new ValidationContext(item, null);

                Validator.TryValidateObject(item, context, itemResults, true);

                if (itemResults.Any())
                {
                    foreach (var itemResult in itemResults)
                    {
                        compositeResults.AddResult(
                            itemResult is CompositeValidationResult
                                ? itemResult
                                : new ValidationResult($"{context.DisplayName}[{i}]: {itemResult}"));
                    }
                }

                i++;
            }

            return(compositeResults.Results.Any()
                ? compositeResults
                : ValidationResult.Success);

            // If we're still here, validation was successful
        }