格式化TextBoxFor从十进制到美元金额

时间:2016-10-05 20:47:14

标签: c# asp.net-mvc decimal

我有一个我预先填充的金额字段。当我运行网络应用程序时,它出现为125.4500。我试着格式化它,但我没有运气。

这是我的PaymentModel:

  [Required]
  [DataType(DataType.Currency)]
  [DisplayFormat(DataFormatString = "{0:F2}", ApplyFormatInEditMode = true)]
  [Display(Name = "Payment Amount")]
  public decimal Amount { get; set; }

DataFormatString似乎没有任何影响。

我的代码在表格上:

@Html.TextBoxFor(m => m.Amount, new { @class = "makePaymentTextRight width90" })

我试过了:

@Html.TextBoxFor(m => string.Format("{0:F2}",m.Amount), new { @class = "makePaymentTextRight width90" })

但是这给了我这个错误:

  

System.InvalidOperationException:模板只能用于字段访问,属性访问,单维数组索引或单参数自定义索引器表达式。

如何将其格式化为2位小数?

1 个答案:

答案 0 :(得分:2)

DisplayFormatAttribute只有在使用EditorFor()DisplayFor()方法时才会得到尊重(使用内置模板)

要格式化值,请使用TextBoxFor()的{​​{3}},其中第二个参数是格式字符串

@Html.TextBoxFor(m => m.Amount, "{0:F2}", new { @class = "makePaymentTextRight width90" })