html .Telerik.NumericTextBoxFor: валидатор не принимает десятичные значения - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть html .Telerik.NumericTextBoxFor компонент в представлении ASP. NET MVC, которое связано со свойством модели. Моя цель - создать текстовое поле для чисел c, в которое будут приниматься только десятичные значения (начиная с 0,01, ноль не допускается) с двумя десятичными цифрами. Итак, я нашел следующие шаги:

Определение свойства модели :

[Required]
[Range(0, double.MaxValue, ErrorMessage = "The article price must be greater than 0")]
[DataMember(), DataType(DataType.Currency)]
public Decimal ArticlePrice{ get; set; }

ASP. NET MVC Просмотр : (для упрощения я показываю только интересные части)

@(Html.Telerik().NumericTextBoxFor(model => model.ArticlePrice).EmptyMessage("Price").MinValue(1.0E-2m).DecimalDigits(2).InputHtmlAttributes(new { style = "width:90px;" }))
@Html.ValidationMessageFor(model => model.ArticlePrice)

При загрузке представления происходит сбой приложения только в строке, где Html .Telerik (). NumericTextBoxFor определяется в представлении cs html , Я установил точку останова в этой строке, и после нажатия клавиши F10 для продолжения отладки выдается ошибка:

Значение было слишком большим или слишком маленьким для десятичного числа.

I Я делал разные тесты, и я обнаружил, что виновником является то, что я определяю диапазон аннотации данных как двойной. Другими словами, это происходит потому, что свойство ArticlePrice определено как десятичное, а аннотация данных диапазона определено как double, поэтому диапазон double в несколько раз больше, чем диапазон decimal. Следовательно, telerik.numerictextboxfor падает. Поэтому, чтобы решить эту проблему, я определил свойство, как показано ниже, установив аннотацию данных диапазона в десятичное значение:

[Required]
[Range(typeof(decimal), "0", "79228162514264337593543950335", ErrorMessage = "The article price must be greater than 0")]
[DataMember(), DataType(DataType.Currency)]
public Decimal ArticlePrice{ get; set; }

Теперь при вводе в текстовом поле числовое значение c десятичные значения недопустимы. Если я ввожу десятичное значение, например 0,01, валидатор говорит, что поле должно быть числом, а также появляется сообщение об ошибке, которое я определил: «Цена товара должна быть больше 0». Почему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...