使用DataAnnotation定义属性的CultureInfo

时间:2014-05-19 13:48:15

标签: c# .net asp.net-mvc-4 data-annotations cultureinfo

我正在开发一个MVC4应用程序,其中有一个带有000000,00数据掩码的字段。 由于该项目的主要文化是pt-BR,这是正确的,并且按预期工作。

问题是我们的一些开发人员将他们的文化设置为英语,当将其提交到设置为en-US的服务器时,会发生验证错误,因为该方法需要000000.00而不是{{1 }}。

我考虑过制作js修复程序以检查浏览器语言并相应地更改掩码,但是如果浏览器设置为英语而服务器设置为葡萄牙语则会失败(我们的某些测试人员处于这种情况)。

我的计划B是使用DataAnnotation,以便服务器知道在验证输入时应该使用的文化。

000000,00

考虑到我不能假设服务器将使用一种语言,我的怀疑是:

我的方法是否正确?
有没有其他更简单的方法呢?
如果我在正确的轨道上,是否有现有的注释?

提前感谢您的关注

2 个答案:

答案 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 }
};

其余的只是链接解决方案的复制/粘贴