带有jQuery验证的ASP.NET MVC和HTML.Editor和其他分数分隔符



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

我已经为这个默认的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插件将解决您的问题。

最新更新