我有以下十进制字段:
[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; }
仍然没有区别。
答案 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" } })
作为替代方案,您可以尝试:
@Html.TextBoxFor(model=>model.Test,"{0:0.00}")