Пользовательская проверка на стороне клиента Asp .Net Core не работает - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь реализовать проверку на стороне клиента для пользовательского атрибута, но, похоже, он не работает.

ToleranciaSuperior не может быть больше или равно ToleranciaInferio. На стороне сервера проверка работает правильно, а на стороне клиента - нет. Чего мне не хватает?

public class Geometria
{
    public int Id { get; set; }

    public string Componente { get; set; }

    [Required]
    [Range(0, float.MaxValue)]
    [Display(Name = "Tolerância Inferior")]
    public float ToleranciaInferior { get; set; }

    [Required]
    [Range(0, float.MaxValue)]
    [ToleranciaLessOrEqualThan("ToleranciaInferior", ErrorMessage = "Tolerância Superior tem de ser maior que a Tolerância Inferior")]
    [Display(Name = "Tolerância Superior")]
    public float ToleranciaSuperior { get; set; }

}

public class ToleranciaLessOrEqualThanAttribute : ValidationAttribute, IClientModelValidator
{
    private readonly string _comparisonProperty;

    public ToleranciaLessOrEqualThanAttribute(string comparisonProperty)
    {
        _comparisonProperty = comparisonProperty;
    }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        ErrorMessage = ErrorMessageString;
        var currentValue = (float)value;

        var property = validationContext.ObjectType.GetProperty(_comparisonProperty);

        if (property == null)
            throw new ArgumentException("Property with this name not found");

        var comparisonValue = (float)property.GetValue(validationContext.ObjectInstance);

        if (currentValue <= comparisonValue)
            return new ValidationResult(ErrorMessage);

        return ValidationResult.Success;
    }

    public void AddValidation(ClientModelValidationContext context)
    {
        if (context == null)
        {
            throw new ArgumentNullException(nameof(context));
        }

        var error = FormatErrorMessage(context.ModelMetadata.GetDisplayName());
        context.Attributes.Add("data-val", "true");
        context.Attributes.Add("data-val-tolerancialessorequalthan", error);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...