가격의 10 진수 필드가 0보다 크거나 같아야한다고 지정하고 싶지만 실제로 최대 값을 부과하고 싶지 않습니다.
여기에 내가 지금까지 가지고있는 것이 있습니다 …이 작업을 수행하는 올바른 방법이 무엇인지 잘 모르겠습니다.
[Range(typeof(decimal), "0", "??"] public decimal Price { get; set; }
답변
이런 식으로 어떻습니까 :
[Range(0.0, Double.MaxValue, ErrorMessage = "The field {0} must be greater than {1}.")]
그것은 당신이 찾고있는 것을해야하며 문자열 사용을 피할 수 있습니다.
답변
문자열이 멋지게 보이는 것에 대해 걱정한다면 다음을 수행 할 수 있습니다.
[Range(0, Double.PositiveInfinity)]
기본 오류 메시지는 다음과 같습니다.
SuchAndSuch 필드는 0과 무한대 사이 여야합니다.
답변
최대 값을 수동으로 입력하는 것 외에는 선택의 여지가없는 것 같습니다. 나는 당신이 그것을 지정할 필요가없는 일종의 과부하가 있기를 바랐습니다.
[Range(typeof(decimal), "0", "79228162514264337593543950335")]
public decimal Price { get; set; }
답변
당신이 사용할 수있는:
[Min(0)]
이렇게하면 필요한 최소값 0 (영)이 적용되고 최대 값이 적용되지 않습니다.
이것을 사용 하려면 DataAnnotationsExtensions 가 필요 합니다.
답변
가격을 다루는 경우 1 조 달러 이상의 비용이 들지 않는다고 가정 할 수 있습니다.
나는 사용할 것이다 :
[Range(0.0, 1000000000000)]
또는 실제로 필요한 경우 Decimal.MaxValue
쉼표없이 값을 붙여 넣으십시오 .79,228,162,514,264,337,593,543,950,335
짐바브웨 출신이 아닌 경우이 중 하나가 제대로 작동합니다.
답변
사용자 정의 유효성 검사를 사용할 수 있습니다.
[CustomValidation(typeof(ValidationMethods), "ValidateGreaterOrEqualToZero")]
public int IntValue { get; set; }
[CustomValidation(typeof(ValidationMethods), "ValidateGreaterOrEqualToZero")]
public decimal DecValue { get; set; }
검증 방법 유형 :
public class ValidationMethods
{
public static ValidationResult ValidateGreaterOrEqualToZero(decimal value, ValidationContext context)
{
bool isValid = true;
if (value < decimal.Zero)
{
isValid = false;
}
if (isValid)
{
return ValidationResult.Success;
}
else
{
return new ValidationResult(
string.Format("The field {0} must be greater than or equal to 0.", context.MemberName),
new List<string>() { context.MemberName });
}
}
}
답변
나는 이런 식으로 시도하려고했다 :
[Range(typeof(decimal), ((double)0).ToString(), ((double)decimal.MaxValue).ToString(), ErrorMessage = "Amount must be greater than or equal to zero.")]
그러나이 작업의 문제점은 컴파일러가 상수 식을 원한다는 것 ((double)0).ToString()
입니다. 컴파일러는 것입니다 걸릴
[Range(0d, (double)decimal.MaxValue, ErrorMessage = "Amount must be greater than zero.")]