我正在开发一个MVC 5网站并遇到一个棘手的问题。
在我的数据库中,我有一个十进制(8,6),我只想让它在我的视野中并以我的形式进行验证
我正在使用这个助手:
@Html.TextBoxFor(x=>x[i].DecimalValue, new{ type="number"})
结果是,我的值未显示,因为输入字段无法处理像“15,11”这样的值,只有像“15.11”这样的值
我甚至尝试手动设置值并用点替换逗号,但后来我不能将我的小数发送回我的控制器,那时它就是alwasy。
我想这只是一件简单的事情,但我不能让它正常工作。
对此有何帮助?
答案 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
,而不是重复逻辑