MVC не принимает десятичные дроби с запятой (,), но отображает их с запятыми по умолчанию - PullRequest
3 голосов
/ 24 сентября 2019

Позвольте мне предварить это, сказав, что у меня почти нулевое понимание того, как работает 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; }

1 Ответ

0 голосов
/ 24 сентября 2019

У меня был проект, и со мной тоже произошла цена.

Вопрос в том, хотите ли вы показать цену, как 1 234,56 или 1234,56.

Если вы хотите, чтобы шоу было в первом формате, я предложу jQuery http://plugin price-format.github.io/Jquery-Price-Format/

Если вы хотитепоказать как второй формат, вы можете создать метод и заменить, (запятая) на. (точка) в JavaScript.

...