.netcore asp-for decimal теряет десятичные разряды

Я столкнулся с проблемой, из-за которой я теряю десятичные знаки при использовании помощника тегов asp-for, на мой взгляд. Кажется, что он всегда округляется до 2 десятичных знаков, в то время как я хочу, чтобы он округлялся до 3 десятичных знаков (в этом случае).

В моем отладчике я вижу, что значение в модели имеет 3 десятичных разряда как e введите описание изображения здесь

Но тогда, на мой взгляд, он отображается как 1.28 вместо 1.275:  введите описание изображения здесь

Это вид моей формы, поскольку вы можете видеть, что на самом деле ничего особенного не происходит (вспомогательная функция тега asp-has-error является вспомогательной функцией настраиваемого тега для этого проекта):

<div class="form-group row">
        <label asp-for="RatePercentage" class="col-lg-4 col-form-label"></label>
        <div class="col-lg-8">
                <input asp-for="RatePercentage" asp-has-error="@Html.HasErrorFor(m => m.RatePercentage)" class="form-control"/>
        </div>
</div>

Есть идеи, как я могу показать здесь 3 десятичных знака?


person nbokmans    schedule 22.06.2018    source источник
comment
Есть ли у вас какие-либо атрибуты свойства модели RatePercentage?   -  person DavidG    schedule 22.06.2018
comment
Никаких атрибутов нет.   -  person nbokmans    schedule 22.06.2018


Ответы (2)


Это просто по умолчанию. Вы можете использовать атрибут DisplayFormat, чтобы сделать все, что вам нравится:

[DisplayFormat(DataFormatString = "{0:[format]}", ApplyFormatInEditMode = true)]
public decimal RatePercentage { get; set; }

Где [format] - желаемая строка формата. См. Строки стандартного числового формата и строки настраиваемого числового формата .

person Chris Pratt    schedule 22.06.2018

Другой способ помешать тегу-помощнику применять это форматирование по умолчанию - явно указать атрибут type элемента input и назначить его как text следующим образом:

<input type="text" asp-for="RatePercentage" …/>

Затем вы получаете «необработанное» десятичное значение в элементе управления вводом, и вы можете использовать маску редактирования или отформатировать его самостоятельно каким-либо другим способом, не теряя автоматически точность значения, которая происходит в противном случае.

person Christopher King    schedule 15.07.2020