/// <summary> /// Returns validation message for given property and validation attribute. /// Can be overriden to return custom messages based on <see cref="AttributeValidationResult.ValidationType"/> property. /// </summary> /// <param name="propertyValidationResult">Result of validation of property value against all its validation attributes.</param> /// <param name="attributeValidationResult">Result of validation of property value against single validation attribute.</param> /// <returns>Validation message.</returns> public virtual string GetValidationMessage(PropertyValidationResult propertyValidationResult, AttributeValidationResult attributeValidationResult) { _ = attributeValidationResult ?? throw new ArgumentNullException(nameof(attributeValidationResult)); return(attributeValidationResult.ValidationResult.ErrorMessage); }
/// <inheritdoc /> public override string GetValidationMessage(PropertyValidationResult propertyValidationResult, AttributeValidationResult attributeValidationResult) { _ = attributeValidationResult ?? throw new ArgumentNullException(nameof(attributeValidationResult)); _ = propertyValidationResult ?? throw new ArgumentNullException(nameof(propertyValidationResult)); var propertyDisplayName = GetPropertyDisplayName(propertyValidationResult); switch (attributeValidationResult.ValidationType) { case ValidationType.Required: case ValidationType.RequiredNonDefault: return(string.Format(CultureInfo.CurrentCulture, ValidationMessages.Required, propertyDisplayName)); case ValidationType.StringLength: var stringLengthAttribute = (StringLengthAttribute)attributeValidationResult.ValidationAttribute; return(string.Format(CultureInfo.CurrentCulture, ValidationMessages.StringLength, propertyDisplayName, stringLengthAttribute.MinimumLength, stringLengthAttribute.MaximumLength)); default: return(base.GetValidationMessage(propertyValidationResult, attributeValidationResult)); } }