如何在MVC中的TextBoxFor中限制为2位小数?

时间:2016-11-18 11:36:21

标签: asp.net-mvc html.textboxfor

我希望小数点后只有2位数。

@Html.TextBoxFor(m => m.Viewers, new { @tabindex = 7 })

需要这样的输出:

56.23

456.20

1.21

像那样..

5 个答案:

答案 0 :(得分:1)

我建议您在客户端格式化小数,如下所示:

ViewModel

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

在您的视图上使用EditorFor

 @Html.EditorFor(m => m.Viewers, new { @tabindex = 7 })

当此值发布到您的Controller时,只需将其修改为2个。

如果您需要验证,请使用Regex:

[RegularExpression(@"^\d+\.\d{0,2}$")] //this line
[DisplayFormat(DataFormatString = "{0:n2}", ApplyFormatInEditMode = true)]
public decimal Viewers { get; set; }

答案 1 :(得分:1)

在视图中

@Html.TextBoxFor(m => m.Viewers, new { @tabindex = 7 }, new { Value=String.Format("{0:0.##}",Model.Viewers) })

在控制器中你也可以格式化你的String.Format(" {0:0。##}",Object.viewers)

Object-意味着模型(包含字段Viewers),传递给View

希望这是有帮助的

答案 2 :(得分:1)

我会在视图中使用编辑器模板。我将定义视图模型,这些模型是根据给定视图的要求专门定制的(在这种情况下将其限制为2位小数):

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

或者你可以简单地使用像

这样的模型的正则表达式
[RegularExpression(@"^\d+.\d{0,2}$]
public decimal Viewers{ get; set; }

然后:

@Html.EditorFor(m => m.Viewers) 

TextBoxFor()也适用于正则表达式

@Html.TextBoxFor(m => m.Viewers, new { @tabindex = 7 })

答案 3 :(得分:1)

如果我使用。

String.Format("{0:0.00}", 123.4567);     

结果:

 // "123.46"

所以你可以试试这个

@Html.TextBoxFor(m => String.Format("{0:0.00}", m.Viewers) , new { @tabindex = 7 })

答案 4 :(得分:0)



  $("#Viewers").change(function (e) {

            var num = parseFloat($(this).val());
            $(this).val(num.toFixed(2));
});

   @Html.TextBoxFor(m => m.Viewers, new { @tabindex = 7 })




感谢大家回复我! :)