Подтвердить что ты не робот

Каков наилучший способ добавления валидатора больше 0 на стороне клиента с использованием MVC и аннотации данных?

Я хотел бы иметь возможность разрешать только отправку формы, если значение в определенном поле больше 0. Я думал, возможно, что атрибут диапазона Mvc позволит мне ввести только одно значение, чтобы обозначить только большее значение тест, но ему не повезло, поскольку он настаивает на минимальных и максимальных значениях.

Любые идеи о том, как это можно достичь?

4b9b3361

Ответ 1

Вы не можете сохранить число, большее, чем ваш базовый тип данных, который может быть сохранен, так что тот факт, что атрибут Range требует максимального значения, очень хорош. Помните, что не существует в реальном мире, поэтому следующее должно работать:

[Range(1, int.MaxValue, ErrorMessage = "Please enter a value bigger than {1}")]
public int Value { get; set; }

Ответ 2

Я нашел этот ответ, пытаясь подтвердить любое положительное значение для числа с плавающей запятой /double. Оказывается, эти типы имеют полезную константу для "Эпсилон"

Представляет наименьшее положительное значение System.Double, которое больше нуля.

    [Required]
    [Range(double.Epsilon, double.MaxValue)]
    public double Length { get; set; }

Ответ 3

В настоящее время вы можете (nu) получить Расширения аннотаций данных, который обеспечивает Min и Max, функционируя так же, как вы ожидали бы от них.

Ответ 4

Вы можете создать свой собственный валидатор, например так:

    public class RequiredGreaterThanZero : ValidationAttribute
{
    /// <summary>
    /// Designed for dropdowns to ensure that a selection is valid and not the dummy "SELECT" entry
    /// </summary>
    /// <param name="value">The integer value of the selection</param>
    /// <returns>True if value is greater than zero</returns>
    public override bool IsValid(object value)
    {
        // return true if value is a non-null number > 0, otherwise return false
        int i;
        return value != null && int.TryParse(value.ToString(), out i) && i > 0;
    }
}

Затем включите этот файл в вашу модель и используйте его как атрибут:

    [RequiredGreaterThanZero]
    [DisplayName("Driver")]
    public int DriverID { get; set; }

Я обычно использую это при проверке выпадающего списка.