TextBoxFor decimal

在我的数据库中,我存储了数据类型为decimal字段。 我在ASP.NET应用程序中使用完全相同( decimal )的数据类型。

这是在我的视图中,以显示值。

 @Html.TextBoxFor(model => model.Stock, new { id = "Stock", @class = "k-textbox" }) 

这非常直截了当。 我面临的唯一问题是默认情况下,在我的视图中,数据显示为4位小数。

我举几个例子说明它的外观和外观:

  1. 1,0000 => 1
  2. 1,2000 => 1,2
  3. 1,4300 => 1,43
  4. 1,8920 => 1,892
  5. 1,5426 => 1,5426

正如您所看到的,我希望将所有0作为小数位切掉(仅在视图中显示时)。

记住:我使用的是逗号而不是小数点。

编辑:

我的模特

 public class Article { public decimal? Stock{ get; set; } } 

您可以像这样使用{0:G29}

 @{ string temp = string.Format("{0:G29}", decimal.Parse(Model.Stock.ToString())); @Html.TextBoxFor(model => temp) } 

或者使用字符串插值:

 @{ string temp = $"{decimal.Parse(Model.Stock.ToString()):G29}"; @Html.TextBoxFor(model => temp) } 

编辑:保存后无法在Controller获取值的原因是模型绑定器找不到名称为temp的属性。 您可以使用TextBox而不是TextBoxFor来解决此问题,如下所示:

 string temp = $"{decimal.Parse(Model.Stock.ToString()):G29}"; @Html.TextBox("Stock" , temp) 

或者,如果您仍想使用TextBoxFor您只需将temp变量重命名为Stock

 string Stock = string.Format("{0:G29}", decimal.Parse(Model.Stock.ToString())); @Html.TextBoxFor(model => Stock) 

string.Format方法的G29参数完全符合您的要求。

您可以在模型Stock值上使用以下属性。

 [DisplayFormat(DataFormatString = "{0:G29}", ApplyFormatInEditMode = true)] 

或者你可以使用@Chris提到的过载 。

 @Html.TextBoxFor(model => model.Stock, "{0:G29}", new { id = "Stock", @class = "k-textbox" }) 

TextBoxFor有一个重载,它接受一个用于格式化文本的format参数。

这将允许您以任何方式格式化您的号码。