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); }
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; }
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 }