[asp.net-mvc] MVC 및 데이터 주석을 사용하여 클라이언트 측에 0보다 큰 유효성 검사기를 추가하는 가장 좋은 방법은 무엇입니까?

특정 필드의 값이 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을 확장하므로 매개 변수를 사용하여 오류 메시지를 사용자 정의 할 수 있습니다.


답변