특정 필드의 값이 0보다 큰 경우에만 양식 제출을 허용하고 싶습니다. Mvc 범위 속성을 사용하면 테스트보다 큰 값만 나타 내기 위해 1 개의 값만 입력 할 수 있다고 생각했지만 그것은 최소 및 최대 값을 주장하기 때문에 운이 없습니다.
이것이 어떻게 달성 될 수 있는가?
답변:
기본 데이터 유형이 보유 할 수있는 것보다 큰 숫자를 저장할 수 없으므로 Range 속성에 최대 값이 필요하다는 사실은 매우 좋은 것입니다. 그 기억 ∞
다음 작동합니다, 그래서 현실 세계에 존재하지 않습니다
[Range(1, int.MaxValue, ErrorMessage = "Please enter a value bigger than {1}")]
public int Value { get; set; }
이 답변은 float / double에 대한 양의 값을 확인하기 위해 찾고 있습니다. 이러한 유형은 'Epsilon'에 유용한 상수를 가지고 있습니다.
0보다 큰 가장 작은 양의 System.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; }
나는 일반적으로 드롭 다운 유효성 검사에 이것을 사용합니다. validationattribute을 확장하므로 매개 변수를 사용하여 오류 메시지를 사용자 정의 할 수 있습니다.
Please enter a value less than or equal to 2147483647
입니다.