Я хотел бы указать, что десятичное поле для цены должно быть> = 0, но я не хочу навязывать максимальное значение.
Вот что у меня есть ... Я не уверен, как правильно это сделать.
[Range(typeof(decimal), "0", "??"] public decimal Price { get; set; }
c#
.net
asp.net-mvc
data-annotations
user169867
источник
источник
Ответы:
Как насчет чего-то вроде этого:
Это должно делать то, что вы ищете, и вы можете избежать использования строк.
источник
The field Fixed price discount must be between 0.01 and 1.79769313486232E+308.
Если вы обеспокоены тем, что строка выглядит красиво, вы можете сделать это:
Это будет иметь сообщение об ошибке по умолчанию:
источник
Кажется, нет другого выбора, кроме как ввести максимальное значение вручную. Я надеялся, что был какой-то тип перегрузки, когда вам не нужно было указывать его.
источник
[Min(0)]
- это также имеет лучшее сообщение проверки. Я бы предложил обновить ваш ответТы можешь использовать:
Это наложит обязательное минимальное значение 0 (ноль), а не максимальное значение.
Вам нужны DataAnnotationsExtensions, чтобы использовать это.
источник
Если вы работаете с ценами, я уверен, вы можете с уверенностью предположить, что ничего не будет стоить более 1 триллиона долларов.
Я бы использовал:
Или, если вам это действительно нужно, просто вставьте значение
Decimal.MaxValue
(без запятых):79,228,162,514,264,337,593,543,950,335
Любой из них будет хорошо работать, если вы не из Зимбабве.
источник
[Range(0.0,Decimal.MaxValue)]
?Вы можете использовать пользовательскую проверку:
Тип методов проверки:
источник
Я собирался попробовать что-то вроде этого:
Однако проблема заключается в том, что компилятору требуется постоянное выражение, что запрещено
((double)0).ToString()
. Компилятор будет приниматьисточник
используя Range с
Надеюсь, это поможет
источник
[Range (0.01,100000000, ErrorMessage = "Цена должна быть больше нуля!")]
источник
Я бы
decimal.MaxValue.ToString()
сказал, так как это эффективный потолок для десятичного типа, он эквивалентен отсутствию верхней границы.источник