我正在开发一个MVC4应用程序,其中有一个带有000000,00
数据掩码的字段。
由于该项目的主要文化是pt-BR,这是正确的,并且按预期工作。
问题是我们的一些开发人员将他们的文化设置为英语,当将其提交到设置为en-US的服务器时,会发生验证错误,因为该方法需要000000.00
而不是{{1 }}。
我考虑过制作js修复程序以检查浏览器语言并相应地更改掩码,但是如果浏览器设置为英语而服务器设置为葡萄牙语则会失败(我们的某些测试人员处于这种情况)。
我的计划B是使用DataAnnotation,以便服务器知道在验证输入时应该使用的文化。
000000,00
考虑到我不能假设服务器将使用一种语言,我的怀疑是:
我的方法是否正确?
有没有其他更简单的方法呢?
如果我在正确的轨道上,是否有现有的注释?
提前感谢您的关注
答案 0 :(得分:0)
您是否尝试过强制web.config中的文化:
<system.web>
<globalization uiCulture="pt" culture="pt-BR"/>
</system.web>
答案 1 :(得分:0)
我最终使用this custom model binder,仅使用NumberFormatInfo
作为Convert.ToDouble()
的第二个参数(而不是CultureInfo
)。这是我使用的NumberFormatInfo
:
readonly NumberFormatInfo NumberFormatInfo = new NumberFormatInfo()
{
NumberDecimalSeparator = ",",
NumberGroupSeparator = ".",
NumberGroupSizes = new int[] { 3 }
};
其余的只是链接解决方案的复制/粘贴