Позвольте мне предварить это, сказав, что у меня почти нулевое понимание того, как работает mvc, и большая часть моего кода была сгенерирована Visual Studio.Я даже не знаю, где искать решение этой проблемы.
Итак, я создал базу данных, в которой в качестве поля указана цена (десятичное число (5,2)).При просмотре базы данных поле цены отображается в формате 0,00.У БД есть одна запись со значением цены 5,25.Затем я попросил vis studio сгенерировать модель на основе этой базы данных (а затем и контроллеров с представлениями).По большей части это работает;Я могу вставить новую запись через представление и сохранить ее в БД.
Проблема с десятичными числами.Когда я перехожу к стандартному представлению «Создать», текстовое поле для ввода цены начинается со значения по умолчанию 0,00.В этом текстовом поле сразу отображается красный текст с предупреждением «Цена поля должна быть числом».Если я введу число без десятичных знаков, запись будет вставлена без проблем.Если я введу число с запятой, я получу вышеупомянутое предупреждение.Если я ввожу число в формате 0,00 (например, 1,25), я не получу предупреждения и могу отправить, но введенное число будет 0.
Аналогичная проблема присутствует в представлении по умолчанию «Редактировать».Все текстовые поля автоматически заполняются данными из выбранной записи (которую нужно редактировать), но поле цены отображается в формате 0,00, и я получаю то же предупреждение, что и выше.При отображении записей в представлении «Индекс» по умолчанию запись с ценой 5,25 отображается правильно в формате 0,00.
У меня нет нулевого вложения в любом формате, я просто хочу согласованности и возможностивведите числа с десятичными знаками.Некоторые из моего кода:
Входные данные в представлениях редактирования / создания (одинаковые в обоих):
<div class="form-group">
<h4>
<strong>Price</strong>
</h4>
<input asp-for="ItemPrice" class="form-control" />
<span asp-validation-for="ItemPrice" class="text-danger"></span>
</div>
Объявление поля цены в модели:
public decimal ItemPrice { get; set; }