/// <summary> /// Validates the specified value with respect to the current validation attribute. /// </summary> /// <param name="value"> /// The value 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 PerformCustomValidation(object value, ValidationContext validationContext) { if (value.IsNull()) { return ValidationResult.Success; } if (validationContext.IsNull()) { validationContext = new ValidationContext(value, null, null) { DisplayName = "The value" }; } var memberNames = new[] { validationContext.MemberName }; int length = value.ToString().Length; if (length > this.maximumLength) { this.ErrorMessage = string.Format(ValidationMessages.ValueGreaterThanMaximumLength, validationContext.DisplayName, this.maximumLength); return new ValidationResult(this.ErrorMessage, memberNames); } return ValidationResult.Success; }
/// <summary> /// Validates the specified value with respect to the current validation attribute. /// </summary> /// <param name="value"> /// The value 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 PerformCustomValidation(object value, ValidationContext validationContext) { if (value.IsNull()) { return ValidationResult.Success; } if (validationContext.IsNull()) { validationContext = new ValidationContext(value, null, null) { DisplayName = "The value" }; } var memberNames = new[] { validationContext.MemberName }; double valueAsDouble; var isDouble = double.TryParse(Convert.ToString(value), out valueAsDouble); if (!isDouble) { this.ErrorMessage = validationContext.DisplayName.FormattedWith(ValidationMessages.ValueMustBeNumeric); return new ValidationResult(this.ErrorMessage, memberNames); } if (valueAsDouble > this.maximum) { this.ErrorMessage = string.Format(ValidationMessages.ValueMustBeLessThanOrEqualTo, validationContext.DisplayName, this.maximum); return new ValidationResult(this.ErrorMessage, memberNames); } return ValidationResult.Success; }
/// <summary> /// Validates the specified value with respect to the current validation attribute. /// </summary> /// <param name="value"> /// The value 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 PerformCustomValidation(object value, ValidationContext validationContext) { if (value.IsNull()) { return ValidationResult.Success; } string convertedValue; if (validationContext.IsNull()) { validationContext = new ValidationContext(value, null, null) { DisplayName = "The value" }; } var memberNames = new string[] { validationContext.MemberName }; try { convertedValue = Convert.ToString(value); } catch (FormatException) { this.ErrorMessage = validationContext.DisplayName.FormattedWith(ValidationMessages.ValueMustBeString); return new ValidationResult(this.ErrorMessage); } if (convertedValue.ContainsLeadingWhiteSpace()) { this.ErrorMessage = validationContext.DisplayName.FormattedWith(ValidationMessages.CanNotContainLeadingWhitespace); return new ValidationResult(this.ErrorMessage, memberNames); } return ValidationResult.Success; }
/// <summary> /// Validates the specified value with respect to the current validation attribute. /// </summary> /// <param name="value"> /// The value 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 PerformCustomValidation(object value, ValidationContext validationContext) { if (value.IsNull()) { return ValidationResult.Success; } string convertedValue; if (validationContext.IsNull()) { validationContext = new ValidationContext(value, null, null) { DisplayName = "The value" }; } var memberNames = new[] { validationContext.MemberName }; try { convertedValue = Convert.ToString(value); } catch (FormatException) { this.ErrorMessage = validationContext.DisplayName.FormattedWith(ValidationMessages.ValueMustBeString); return new ValidationResult(this.ErrorMessage); } // Remove any of the extra permitted characters before applying the IsAlpha rule... foreach (string character in this.extraCharacters) { convertedValue = convertedValue.Replace(character, string.Empty); } // The convertedValue might be an empty string after we strip out the extra characters. This should not // cause validation to fail. if (!string.IsNullOrEmpty(convertedValue) && !convertedValue.IsAlpha()) { if (this.extraCharacters.Length == 0) { this.ErrorMessage = validationContext.DisplayName.FormattedWith(ValidationMessages.CanOnlyContainLetters); } else { this.ErrorMessage = string.Format( ValidationMessages.CanOnlyContainLettersAndSpecialCharacters, validationContext.DisplayName, string.Join(string.Empty, this.extraCharacters)); } return new ValidationResult(this.ErrorMessage, memberNames); } return ValidationResult.Success; }
/// <summary> /// Validates the specified value with respect to the current validation attribute. /// </summary> /// <param name="value"> /// The value 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 PerformCustomValidation(object value, ValidationContext validationContext) { if (value.IsNull()) { return ValidationResult.Success; } string convertedValue; if (validationContext.IsNull()) { validationContext = new ValidationContext(value, null, null) { DisplayName = "The value" }; } var memberNames = new[] { validationContext.MemberName }; try { convertedValue = Convert.ToString(value); } catch (FormatException) { this.ErrorMessage = validationContext.DisplayName.FormattedWith(ValidationMessages.ValueMustBeString); return new ValidationResult(this.ErrorMessage); } if (!convertedValue.IsPrintableCharacter()) { var englishAlphabetProvider = new EnglishAlphabetProvider(); string extendedCharacters = string.Join(string.Empty, englishAlphabetProvider.GetPrintableCharacters()); this.ErrorMessage = string.Format(ValidationMessages.CanOnlyContainPrintableCharacters, validationContext.DisplayName, extendedCharacters); return new ValidationResult(this.ErrorMessage, memberNames); } return ValidationResult.Success; }