【发布时间】:2013-07-17 19:00:27
【问题描述】:
我有一个带有这个货币字段的 ASP.NET MVC-4 应用程序:
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:c}", ConvertEmptyStringToNull = true)]
[DataType(DataType.Currency)]
public decimal? Price { get; set; }
这是我认为的对应部分:
@Html.EditorFor(model => model.Price)
@Html.ValidationMessageFor(model => model.Price)
如果价格是 100 欧元,视图中的文本字段会显示:
100,00 欧元
这很好。
但我一尝试回发就遇到了问题。验证器弹出并说价格字段需要是一个数字。
只有在 (1) 删除 € 符号并 (2) 替换小数点分隔符(用点替换逗号)时,我才能解决此问题。
如果没有更好的解决方案,我想我可以更改 DataFormatString = "{0:F2}" 以避免货币符号。
但是如何让验证器接受逗号作为小数分隔符而不是(美式)点?
谢谢你们的帮助,伙计们!
【问题讨论】:
-
我认为你需要做一个自定义模型活页夹检查这个链接haacked.com/archive/2011/03/19/fixing-binding-to-decimals.aspx
-
@Overmachine:感谢您的评论。但我认为 ModelBinder 不会解决验证器问题。换句话说:我仍然想要客户端验证 - 验证器仍然会失败(有或没有 ModelBinder),我错了吗?
-
客户端验证仍然有效,问题是当您回帖时,它正在发送货币符号。
-
你好。 “客户端验证仍然有效”是什么意思?当然它会起作用,但验证的结果将是负面的——即使我删除了货币符号。至少那是我的测试运行中发生的事情。无论如何,我能够通过使用来自github.com/jquery/globalize 的东西来解决我的问题。感谢您的帮助,Overmachine!
标签: asp.net-mvc-4 razor ef-code-first