반응형
asp.net mvc의 최소 / 최대 값 유효성 검사기
asp.net mvc의 속성을 사용한 유효성 검사는 정말 좋습니다. [Range(min, max)]
예를 들어 다음과 같이 값을 확인하기 위해 지금까지 유효성 검사기를 사용했습니다 .
[Range(1, 10)]
public int SomeNumber { get; set; }
그러나-이제 최소 및 최대 조건을 별도로 확인해야합니다. 다음과 같은 속성을 찾을 것으로 예상했습니다.
[MinValue(1, "Value must be at least 1")]
[MaxValue(10, "Value can't be more than 10")]
public int SomeNumber { get; set; }
이것을 작성하기 위해 미리 정의 된 속성이 있습니까? 아니면 어떻게해야합니까?
MaxValue에 대한 유효성 검사기를 작성하는 방법은 다음과 같습니다.
public class MaxValueAttribute : ValidationAttribute
{
private readonly int _maxValue;
public MaxValueAttribute(int maxValue)
{
_maxValue = maxValue;
}
public override bool IsValid(object value)
{
return (int) value <= _maxValue;
}
}
MinValue 속성은 상당히 동일해야합니다.
최소 / 최대 유효성 검사 속성이 존재하지 않는다고 생각합니다. 나는 다음과 같은 것을 사용할 것입니다.
[Range(1, Int32.MaxValue)]
최소값 1 및
[Range(Int32.MinValue, 10)]
최대 값 10
이것이 어떻게 수행 될 수 있는지에 대한 완전한 예. 클라이언트 측 유효성 검사 스크립트를 작성할 필요가 없도록 기존 ValidationType = "range"가 사용되었습니다.
public class MinValueAttribute : ValidationAttribute, IClientValidatable
{
private readonly double _minValue;
public MinValueAttribute(double minValue)
{
_minValue = minValue;
ErrorMessage = "Enter a value greater than or equal to " + _minValue;
}
public MinValueAttribute(int minValue)
{
_minValue = minValue;
ErrorMessage = "Enter a value greater than or equal to " + _minValue;
}
public override bool IsValid(object value)
{
return Convert.ToDouble(value) >= _minValue;
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
var rule = new ModelClientValidationRule();
rule.ErrorMessage = ErrorMessage;
rule.ValidationParameters.Add("min", _minValue);
rule.ValidationParameters.Add("max", Double.MaxValue);
rule.ValidationType = "range";
yield return rule;
}
}
jQuery Validation Plugin already implements min and max rules, we just need to create an adapter for our custom attribute:
public class MaxAttribute : ValidationAttribute, IClientValidatable
{
private readonly int maxValue;
public MaxAttribute(int maxValue)
{
this.maxValue = maxValue;
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
var rule = new ModelClientValidationRule();
rule.ErrorMessage = ErrorMessageString, maxValue;
rule.ValidationType = "max";
rule.ValidationParameters.Add("max", maxValue);
yield return rule;
}
public override bool IsValid(object value)
{
return (int)value <= maxValue;
}
}
Adapter:
$.validator.unobtrusive.adapters.add(
'max',
['max'],
function (options) {
options.rules['max'] = parseInt(options.params['max'], 10);
options.messages['max'] = options.message;
});
Min attribute would be very similar.
참고URL : https://stackoverflow.com/questions/7256753/min-max-value-validators-in-asp-net-mvc
반응형
'programing' 카테고리의 다른 글
@가있는 C #의 축어 문자열에 해당하는 Java (0) | 2020.08.22 |
---|---|
CPanel을 사용하여 크론 작업에서 PHP 파일 실행 (0) | 2020.08.21 |
백그라운드에서 쉘 스크립트를 실행하고 출력을 얻는 방법 (0) | 2020.08.21 |
SVN 모범 사례-팀 작업 (0) | 2020.08.21 |
스레드 경합이란 무엇입니까? (0) | 2020.08.21 |