TextBoxFor decimal
在我的数据库中,我存储了数据类型为decimal
字段。 我在ASP.NET应用程序中使用完全相同( decimal
)的数据类型。
这是在我的视图中,以显示值。
@Html.TextBoxFor(model => model.Stock, new { id = "Stock", @class = "k-textbox" })
这非常直截了当。 我面临的唯一问题是默认情况下,在我的视图中,数据显示为4位小数。
我举几个例子说明它的外观和外观:
- 1,0000 => 1
- 1,2000 => 1,2
- 1,4300 => 1,43
- 1,8920 => 1,892
- 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
参数。
这将允许您以任何方式格式化您的号码。