2012-01-26 2 views
0

Я здесь сейчас из-за двух вещей.ASP.NET MVC 3: Изменение скриптов проверки и сообщений глобализации

Первое:

Мне нужно изменить сценарий 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, как я могу refactorize это в мин (я не знаю, различия между ними, поэтому немного воды в этот момент было бы здорово). ¿Было бы лучше расширить сценарий? Как? (Пробовал это LenardG's jQuery validate and the comma decimal separator (MVC) но не получилось :()

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

Во-вторых.

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

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

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

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


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

ответ

0

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

+0

Очень удивительный из вас! –

+0

Это очень легко и просто, хотя я предпочитаю использовать простые файлы ресурсов, созданные мной и меняя вручную все сообщения. – JuanC

0

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

Создайте еще один файл 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/.

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

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

1

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

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

С уважением.

Смежные вопросы