Chciałbym móc zezwalać na przesyłanie formularza tylko wtedy, gdy wartość w pewnym polu jest większa niż 0. Pomyślałem, że może atrybut Zakres Mvc pozwoliłby mi wprowadzić tylko 1 wartość, aby oznaczać tylko wartość większą niż test, ale nie ma szczęścia, ponieważ nalega na wartości minimalne i maksymalne.
Jakieś pomysły, jak to osiągnąć?
Please enter a value less than or equal to 2147483647
.Znalazłem tę odpowiedź, aby zweryfikować każdą dodatnią wartość dla zmiennej zmiennoprzecinkowej / podwójnej. Okazuje się, że te typy mają użyteczną stałą dla „Epsilon”
[Required] [Range(double.Epsilon, double.MaxValue)] public double Length { get; set; }
źródło
Możesz stworzyć swój własny walidator w ten sposób:
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; } }
Następnie uwzględnij ten plik w swoim modelu i użyj go jako atrybutu w następujący sposób:
[RequiredGreaterThanZero] [DisplayName("Driver")] public int DriverID { get; set; }
Często używam tego w walidacji listy rozwijanej. Zauważ, że ponieważ rozszerza on atrybut validationattribute, możesz dostosować komunikat o błędzie za pomocą parametru.
źródło