asp.net mvc,带有jquery验证和Html.EditorFor以及不同的小数分隔符

asp.net mvc,带有jquery验证和Html.EditorFor以及不同的小数分隔符,jquery,validation,asp.net-mvc-4,Jquery,Validation,Asp.net Mvc 4,我读过很多关于这个问题的博客,但我从来没有看到完整的解决方案 我已经构建了这个默认html(其中bedrag是十进制): @EditorFor(model=>model.Bedrag) @Html.ValidationMessageFor(model=>model.Bedrag) 这会在呈现页面时为输入控件中的小数点生成逗号,即使我将其放入web.config: 还是这个 然后,Jquery验证插件抱怨我的“bedrag”输入字段(由@Html.EditorFor(model=>model

我读过很多关于这个问题的博客,但我从来没有看到完整的解决方案

我已经构建了这个默认html(其中bedrag是十进制):


@EditorFor(model=>model.Bedrag)
@Html.ValidationMessageFor(model=>model.Bedrag)
这会在呈现页面时为输入控件中的小数点生成逗号,即使我将其放入web.config:
还是这个

然后,Jquery验证插件抱怨我的“bedrag”输入字段(由
@Html.EditorFor(model=>model.bedrag)
放在那里)中有一个逗号作为十进制分隔符,这会导致错误,我的输入不是一个数字;它需要一个点作为十进制分隔符

但是,当我输入12.90这个数字时,默认的modelbinder将我的输入转换为1290(输入乘以100)

然后我创建了一个自定义modelbinder,在该代码中,currentculture是'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;
    };
});
$(函数(){
//查看metatag中我们想要的文化
//并将其设置为客户端的区域性。
var data=$(“meta[name='accept-language']”)attr(“content”);
Globalize.culture(data.toString());
//不要在keyup事件上验证,因为它会出错
//替换文本框中的值时的光标。
$('form')。每个(函数(){
var validator=$(this.data('validator');
if(验证器){
validator.settings.onkeyup=false;
}
});
//对插入的数字进行比利时化/消毒
// 1 000 000    =>      1000000
// 1.00         =>      1,00
$.validator.methods.number=函数(值,元素){
var s=value.replace(/\/g').split('.').join(',');
如果(s.split(',')。长度<3){
var number=Globalize.parseFloat;
如果(!isNaN(编号)){
$(元素).val(s);
返回此值。可选(元素)| | true;
}
}
返回此值。可选(元素)| | false;
};
});

我想我用过全球化

你看过这篇()博客文章吗?是的,我看过,但它有一个链接到“jQuery Global plugin.”是404,还有一个链接到这个页面“700 jQuery Globs from GitHub.”也是404。
$(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;
    };
});