asp.net mvc,带有jqueryvalidation和Html.EditorFor以及不同的decimalseparators

我已经阅读了很多关于这个主题的博客文章,但我从未见过完整的解决方案。

我已经支持这个默认的html(其中bedrag是一个十进制):

@Html.EditorFor(model => model.Bedrag) @Html.ValidationMessageFor(model => model.Bedrag)

这会在呈现页面时在输入控件中生成小数点的逗号,即使我将它放在我的web.config中: 或者这个

然后,Jquery Validation插件抱怨我的’bedrag’输入字段中有一个逗号作为小数分隔符(已经被@Html.EditorFor(model => model.Bedrag)放在那里),这给出了我输入的错误不是一个数字; 它期望一个点作为小数分隔符。

但是,当我输入数字为12.90时,默认模型绑定器将我的输入转换为1290(输入时间为100)。

然后我创建了一个自定义模型绑定器,在该代码中,当前文化是’nl-NL’,所以不是我的web.config中的’en-US’。

所以现在我想知道:

1 2014年我还需要定制模型装订机吗?

2当ASP.Net为@Html.ValidationMessageFor(model => model.Bedrag)创建值时,使用哪种文化? (为什么不是我的web.config中的那个?)

3如何动态设置用于@Html.ValidationMessageFor(model => model.Bedrag)的文化@Html.ValidationMessageFor(model => model.Bedrag)

4如何动态设置用于Jqueryvalidation的区域性?

我已经退出ASP.Net MVC一年了,但是在2014年我仍然会遇到这些带小数符号的问题吗?

我使用的方法是扩展jQueryvalidation器。 它基于这篇博文 。 我将元数据中的文化设置为BE-nl。 由于这是一个纯粹的荷兰网站,我不会进一步检查。

 $(function () { // Look in metatag what culture we want // and set this as culture for the client side. var data = $("meta[name='accept-language']").attr("content"); Globalize.culture(data.toString()); // Don't validate on keyup event because it will mess up // the cursor when replacing values in a textbox. $('form').each(function () { var validator = $(this).data('validator'); if (validator) { validator.settings.onkeyup = false; } }); // Belgianize/sanitize the numbers inserted // 1 000 000 => 1000000 // 1.00 => 1,00 $.validator.methods.number = function (value, element) { var s = value.replace(/\ /g, '').split('.').join(','); if (s.split(',').length < 3) { var number = Globalize.parseFloat(s); if (!isNaN(number)) { $(element).val(s); return this.optional(element) || true; } } return this.optional(element) || false; }; }); 

我想我用这个jQuery库来实现全球化

我认为使用Microsoft的jQuery Globalization Plugin可以解决您的问题。