.netcore asp-for十进制失去小数位

时间:2018-06-22 10:15:23

标签: asp.net-core asp.net-core-tag-helpers

我遇到一个问题,在我的视图中使用asp-for标签帮助程序时,我失去了小数位。似乎总是四舍五入到小数点后两位,而我想让它四舍五入到小数点后三位(在这种情况下)。

我在调试器中看到模型中的值具有3个小数位,例如e enter image description here

但是在我看来,它显示为1.28而不是1.275enter image description here

这是我表单的视图,如您所见,实际上并没有什么特别的事情(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个小数位吗?

2 个答案:

答案 0 :(得分:1)

这只是默认设置。您可以使用DisplayFormat属性将其设置为任意值:

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

[format]是您想要的格式字符串。参见Standard Numeric Format StringsCustom Numeric Format Strings

答案 1 :(得分:1)

阻止标记帮助程序应用此默认格式的另一种方法是显式指定input元素的type属性并将其分配为text,如下所示:

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

然后,在输入控件中获得“原始”十进制值,您可以使用编辑掩码或以其他方式自行设置其格式,而不会自动丢失否则会发生的值的精度。