ASP .NET MVC 3: изменение сценариев проверки и глобализация сообщений - PullRequest
0 голосов
/ 26 января 2012

Я здесь из-за двух вещей.

Первое:

Мне нужно изменить скрипт jQuery, чтобы исправить этот десятичный разделитель (точка или кома),В моей стране (Аргентина) мы используем запятую в качестве десятичного разделителя, а jQuery.validation использует точку.Мне удалось изменить RegEx, и теперь он исправлен, но мой вопрос возникает с другой стороны.

Всякий раз, когда я добавляю View, он ссылается на два сценария

<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, как я могу рефакторизовать это в мин (я не знаю различий между ними, так что немного воды на этом этапе было бы здорово).¿Было бы лучше расширить сценарий?Как?(Попробовал JQuery проверить LenardG и десятичный разделитель запятой (MVC) , но не сработало :()

Я также не знаю, смогу ли я изменить одно за другим просто таки он продолжит работать.

Секунда:

Мне нужно глобализировать сообщения из проверки клиента jQuery.

Например, когда вы набираетебуква в числовом поле (скажем, возраст) отображает сообщение «Возраст поля должен быть числом». ... Я сводил с ума, раз за разом просматривая все решение для этого сообщения (ИМХО, работа дьявола.) Но, очевидно, не удалось.

Хотя передовой практикой будет выбор культуры и тому подобного в соответствии с культурой веб-браузера, веб-приложение, которое я должен сделать, должнопусть пользователь системы будет тем, кто выбирает культуру (возможно, на странице входа в систему или на странице конфигурации пользователя, но это не имеет значения).

Итак, если пользователь выбирает культуру es-AR(испанский сюдам Аргентина), сообщение, которое я хочу показать: «El campo edad debe ser un número.»;если пользователь выбирает культуру fr-FR, сообщение для показа должно быть (спасибо Google переводчик) "Le champ âge doit être un nombre."


Извините за мой английский, я надеюсь, вы понимаетемои вопросы".Спасибо людям;)

Ответы [ 3 ]

1 голос
/ 25 февраля 2013

Пожалуйста, просто добавьте этот код после сценариев 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;
    }
});

Это установит дату в соответствии с культурой навигатора и использует "," в качестве десятичного разделителя.

С уважением.

0 голосов
/ 26 января 2012

Я кодирую проект contrib для MVC3, который включает более простой способ локализации сообщений: http://blog.gauffin.org/2011/09/easy-model-and-validation-localization-in-asp-net-mvc3/

0 голосов
/ 26 января 2012

Во-первых, я считаю, что вам нужен только один из этих сценариев проверки (если они обычные и минимизированные).

Создайте еще один js-файл с именем app.domready.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"
            }

    });
});

Вы устанавливаете свои параметры там на основе идентификатора / класса (ов) формы.Посмотрите исходный код по адресу http://jquery.bassistance.de/validate/demo/ для получения справки.

And min или любой плагин jquery, имеющий имя .min, означает уменьшенный или сжатый для сохранения пробела / размера, когда браузер анализирует егочто означает, что ваш пользователь загружает меньше, а значит быстрее.Обычно мы используем несжатый в разработке и имеем скрипт сборки в VS2010 для сжатия всего.

Надеюсь, я понял, что вы пытаетесь сделать.

...