在视图中显示钱的问题

Issue displaying money on view

我有以下

public decimal? Price {get;set;}

当我在视图的文本框(下面的文本框)中输入 3000.00 时

  <div class="form-group">
    <label class="col-lg-3 control-label no-padding-right">Price</label>
        <div class="col-lg-5">
            @Html.ValidationMessageFor(m => m.Price)
        <div class="input-group">
            <span class="input-group-addon">£</span>
                @Html.TextBoxFor(m => m.Price, new { @class = "form-control", type = "text", id = "txtPrice", onkeypress = "return isNumberKey(event)" })
        </div>
      </div>
   <label class="col-lg-4 control-label" style="text-align: left">Decimal format</label>

所以它看起来像这样

它在数据库中保存为预期的 3000.00,但是当我 return 返回视图编辑它时,文本框中的值为 3000.0000

我已经尝试了这里的一些解决方案

Remove trailing zeros of decimal

我认为我遇到的问题是视图上的字段是小数类型而不是字符串,所以我不确定如何格式化这个小数以删除尾随零,所以它看起来像上图

您需要使用接受格式字符串的 TextBoxFor 的重载

@Html.TextBoxFor(m => m.Price, "{0:0.00}", new { @class = "form-control", type = "text", id = "txtPrice", onkeypress = "return isNumberKey(event)"})

旁注:

  1. 删除type="text"。 html 助手已经为您添加了这个(添加 为什么你不只使用默认的 id 呈现的原因? 助手,即 id="Price"?).
  2. 使用 Unobtrusive Javascript 而不是污染您的标记 有行为 - 例如$('#txtPrice').keypress(...