Me gustaría poder permitir que se envíe un formulario solo si el valor en un determinado campo es mayor que 0. Pensé que tal vez el atributo Mvc Range me permitiría ingresar solo 1 valor para significar solo una prueba mayor que, pero no hay suerte allí, ya que insiste en valores mínimos y máximos.
¿Alguna idea de cómo se puede lograr esto?
Please enter a value less than or equal to 2147483647
.Encontré esta respuesta buscando validar cualquier valor positivo para un flotante / doble. Resulta que estos tipos tienen una constante útil para 'Epsilon'
[Required] [Range(double.Epsilon, double.MaxValue)] public double Length { get; set; }
fuente
Puede crear su propio validador así:
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; } }
Luego incluye ese archivo en tu modelo y utilízalo como un atributo como este:
[RequiredGreaterThanZero] [DisplayName("Driver")] public int DriverID { get; set; }
Normalmente uso esto en la validación desplegable. Tenga en cuenta que debido a que extiende el atributo de validación, puede personalizar el mensaje de error con un parámetro.
fuente