ASP.NETMVC 3:修改验证脚本和全球化消息



我现在来这里是因为两件事。

第一个:

我需要修改一个jQuery脚本来修复小数分隔符(点或昏迷)。在我的国家(阿根廷),我们使用昏迷作为小数分隔符,jQuery.validation使用句点。我设法改变了RegEx,现在已经解决了,但我的问题来自另一方。

每当我添加一个视图时,它都会引用两个脚本

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

既然我只直接修改了jquery.validate.js,我该如何将其重构为min(我不知道它们之间的区别,所以在这一点上加一点水就好了)。?扩展脚本会更好吗??如何?(尝试过LenardG的jQuery验证和逗号-十进制分隔符(MVC),但没有成功:()

我也不知道我是否能像那样一个接一个地改变,它会继续发挥作用。

第二:

我需要将来自jQuery客户端验证的消息全球化。

例如,当你在数字字段(比如年龄)中键入一个字母时,它会显示一条消息,说"字段年龄必须是一个数字。"……我一直在疯狂地查找整个解决方案,一遍又一遍地寻找这个消息(IMHO,魔鬼之作)。但显然,没有成功。

虽然好的做法是根据网络浏览器的文化选择文化和其他东西,但我必须做的网络应用程序必须让系统的用户选择文化(可能在登录页面或用户配置页面中,但这无关紧要)。

因此,如果用户选择es AR文化(来自阿根廷的西班牙语),我想显示的信息是"El campo edad debe ser un número";如果用户选择fr-fr文化,则显示的信息应该是(感谢谷歌翻译)"Le champâge doitêtre un nombre"


对不起我的英语,我希望你能理解我的"问题"。感谢人们;)

请在jquery.validate脚本之后添加此代码:

$(document).ready(function () {
    $.validator.methods.range = function (value, element, param) {
        var globalizedValue = value.replace(",", ".");
        return this.optional(element) || (globalizedValue >= param[0] && 
               globalizedValue <= param[1]);
    }
    $.validator.methods.number = function (value, element) {
        return this.optional(element) || /^-?(?:d+|d{1,3}(?:[s.,]d{3})+)(?:[.,]d+)?$/.test(value);
    }
    $.validator.methods.date = function (value, element) {
        var isValid = true;
        if (Object.prototype.toString.call(d) === "[object Date]") {            
            if ( isNaN( d.getTime() ) ) { 
                isValid = false;
            }            
        }
        else {
            isValid = false;
        }
        return this.optional(element) || isValid;
    }
});

这将根据导航器区域性设置相应的日期,并使用","作为小数分隔符。

谨致问候。

我正在为MVC3编写一个contrib项目,其中包括一种更容易处理消息本地化的方法:http://blog.gauffin.org/2011/09/easy-model-and-validation-localization-in-asp-net-mvc3/

首先,我相信您只需要包含其中一个验证脚本(如果它们只是常规的和缩小的)。

创建另一个名为app.domready.js的js文件。这将是您放置常规生产代码的地方。为了更新的目的直接编辑插件通常也是不好的。

将所有这些放在app.domready.js中,并在您的主页/view_Layout.cshtml.中引用它

<script src="@Url.Content("~/Scripts/app.domready.js")"></script>

这将初始化jquery.validate插件。

$(document).ready(
      function () {         
                $('form').validate({
                rules: {
                firstname: "required",
                lastname: "required",
                username: {
                    required: true,
                    minlength: 2
                },
                password: {
                    required: true,
                    minlength: 5
                },
                confirm_password: {
                    required: true,
                    minlength: 5,
                    equalTo: "#password"
                },
                email: {
                    required: true,
                    email: true
                },
                topic: {
                    required: "#newsletter:checked",
                    minlength: 2
                },
                agree: "required"
            },
            messages: {
                firstname: "Please enter your firstname",
                lastname: "Please enter your lastname",
                username: {
                    required: "Please enter a username",
                    minlength: "Your username must consist of at least 2 characters"
                },
                password: {
                    required: "Please provide a password",
                    minlength: "Your password must be at least 5 characters long"
                },
                confirm_password: {
                    required: "Please provide a password",
                    minlength: "Your password must be at least 5 characters long",
                    equalTo: "Please enter the same password as above"
                },
                email: "Please enter a valid email address",
                agree: "Please accept our policy"
            }
    });
});

您可以根据表单ID/类在其中设置参数。请在上查看源代码http://jquery.bassistance.de/validate/demo/寻求帮助。

min或任何名称中包含.min的jquery插件意味着在浏览器解析时缩小或压缩以节省空白/大小,这意味着用户下载的次数更少,也意味着更快。我们通常在开发中使用未压缩的,并在VS2010中使用构建脚本来压缩所有内容。

希望我能理解你的意图。

最新更新