Program Tip

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

programtip 2020. 10. 15. 21:31
반응형

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; }

나는 일반적으로 드롭 다운 유효성 검사에 이것을 사용합니다.

참고 URL : https://stackoverflow.com/questions/7419194/what-is-the-best-way-of-adding-a-greater-than-0-validator-on-the-client-side-usi

반응형