我已经阅读了很多有关此主题的博客文章,但是我从未见过完整的解决方案。
我已经为这个默认的html(bedrag是十进制)进行了访问:
<div class="editor-field">
@Html.EditorFor(model => model.Bedrag)
@Html.ValidationMessageFor(model => model.Bedrag)
</div>
这将在渲染页面时为输入控件中的小数点生成一个逗号,即使我将其放在我的web.config: <globalization culture="en-US" uiCulture="en-US" />
或这个 <globalization culture="auto" uiCulture="auto" />
然后,jQuery验证插件抱怨说,我的" bedrag"输入字段中有一个逗号作为十进制分离器(由@Html.EditorFor(model => model.Bedrag)
放置在此处),这给出了错误的错误,我的输入不是一个数字;它期望一个点作为小数分离器。
但是,当我输入该号码为12.90时,默认模型宾德将我的输入转换为1290(输入时间100)。
然后,我创建了一个自定义模型Binder,在该代码中,当前文化为" nl-nl",因此不是我的web.config的" en-us"。
所以我想知道:
1我仍然需要2014年的自定义模型活页夹?
2当ASP.NET创建@Html.ValidationMessageFor(model => model.Bedrag)
值时,使用哪种文化?(为什么不来自我的web.config?)
3我如何动态设置用于@Html.ValidationMessageFor(model => model.Bedrag)
4如何动态设置用于jQuery验证的文化?
我已经离开ASP.NET MVC一年了,但是在2014年,我仍然有这些问题的问题?
我使用的方法是扩展jQuery验证器。它基于此博客文章。我将元数据的文化设置为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插件将解决您的问题。