MVC 5处理十进制值。

时间:2015-10-26 17:17:19

标签: c# html asp.net-mvc html5 validation

我正在开发一个MVC 5网站并遇到一个棘手的问题。

在我的数据库中,我有一个十进制(8,6),我只想让它在我的视野中并以我的形式进行验证

我正在使用这个助手:

@Html.TextBoxFor(x=>x[i].DecimalValue, new{ type="number"})

结果是,我的值未显示,因为输入字段无法处理像“15,11”这样的值,只有像“15.11”这样的值

我甚至尝试手动设置值并用点替换逗号,但后来我不能将我的小数发送回我的控制器,那时它就是alwasy。

我想这只是一件简单的事情,但我不能让它正常工作。

对此有何帮助?

2 个答案:

答案 0 :(得分:1)

我认为您的小数点需要非英语用户数据输入(德语可能基于您的姓名/句柄)。

问题是,小数存储在.NET和数据库中的方式不喜欢这种格式。

您可以将其视为字符串输入,然后使用注释属性将自己的正则表达式应用于ViewModel中的DecimalValue属性,如下所示:

[RegularExpression("(\\d{1,8}\\,\\d{1,6})", ErrorMessage = "Enter a valid decimal number")]

在您将其推入数据库之前,您需要使用CultureInfo类将字符串转换为正确的小数,例如:

decimal amount = decimal.Parse("15,11", CultureInfo.GetCultureInfo("de-DE"));

答案 1 :(得分:1)

更好的方法是创建自己的模型绑定器来处理小数值。请参阅this question on SO

,而不是重复逻辑