MVC5:如何指定表单控件来限制小数位数?

时间:2015-12-30 19:43:44

标签: asp.net-mvc asp.net-mvc-5 currency

我有以下十进制字段:

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

在我的剃刀视图中

<td>Price</td>
<td>

@Html.EditorFor(model => model.MyDecimal, new { htmlAttributes = new { @class = "form-control decimal-small inline" } })
@Html.ValidationMessageFor(model => model.MyDecimal, "", new { @class = "text-danger" })
</td>

我希望用户只能在小数分隔符后面加上最多2个数字。在很多帖子中,我看到DisplayFormat应该可以工作,但它在编辑模式下没有做任何事情。在我的编辑字段中,我仍然可以在分隔符后面添加2个以上的数字

我也试过

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

仍然没有区别。

1 个答案:

答案 0 :(得分:2)

我认为您期望[DisplayFormat]属性具有不同的功能。此属性表示数据应如何显示,未输入。 您的解决方案有效,您的号码会以应用的格式显示,不是吗? 您尝试实现的是输入掩码,这是一个客户端功能。请参阅以下链接以了解有关它的更多信息:

修改

我已经进行了快速测试 视图模型:

[DisplayFormat(DataFormatString = "{0:0.00}",ApplyFormatInEditMode = true)]
public decimal Test {
            get { return (decimal) 1.345; } }

并查看:

@Html.EditorFor(model=>model.Test, new { htmlAttributes = new { @class = "form-control decimal-small inline" } })

它显示: enter image description here

作为替代方案,您可以尝试:

@Html.TextBoxFor(model=>model.Test,"{0:0.00}")