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

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

Есть идеи, как этого достичь?

Ответы [ 3 ]

197 голосов
/ 14 сентября 2011

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

[Range(1, int.MaxValue, ErrorMessage = "Please enter a value bigger than {1}")]
public int Value { get; set; }
6 голосов
/ 20 июля 2018

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

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

2 голосов
/ 17 апреля 2019

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...