Я хотел бы иметь возможность разрешать отправку формы только в том случае, если значение в определенном поле больше 0. Я подумал, что, возможно, атрибут Mvc Range позволит мне ввести только 1 значение, чтобы обозначить только тест, превышающий значение, но там не повезло, поскольку он настаивает на минимальных и максимальных значениях.
Есть идеи, как этого можно достичь?
Please enter a value less than or equal to 2147483647
.Я нашел этот ответ, чтобы проверить любое положительное значение для float / double. Оказывается, у этих типов есть полезная константа для "Эпсилона".
[Required] [Range(double.Epsilon, double.MaxValue)] public double Length { get; set; }
источник
Вы можете создать свой собственный валидатор следующим образом:
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; }
Я обычно использую это при проверке раскрывающегося списка. Обратите внимание, что, поскольку он расширяет атрибут проверки, вы можете настроить сообщение об ошибке с помощью параметра.
источник