« Все записи

ASP.NET MVC 3: поддержка валидации в неанглийских локалях

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

Сегодня очень короткий пост о национальной гордости о том, как заставить плагин jQuery validation, используемый в приложениях ASP.NET MVC 3 работать корректно в неанглийских локалях, коей является и наша русская.

Если язык интерфейса вашего MVC-приложения не английский, то, скорее всего, плагин JQuery validation не будет корректно справляться с датами и числами, поскольку национальные форматы чисел и дат, как правило, отличаются от используемых по умолчанию этим плагином (например, в России в качестве разделителя целой и дробной частей чисел используется запятая "," вместо точки "."). Так, у вас есть поле Price с ценой товара, то при вводе в него значения "9,99" вы получите такую ошибку:

Значением поля Price должно быть число.

Для поддержки валидации для национальных локалей в приложениях ASP.NET MVC 3 вы должны просто включать в представления файл скрипта с локализованными методами для языка, который должен поддерживаться. Для некоторых языков эти файлы, которые называются methods_XX.js (XX соответствует языку) можно найти в исходных кодах на странице проекта https://github.com/jzaefferer/jquery-validation/tree/master/localization. К сожалению, файла для русского языка там нет. Но его не сложно сделать самому, например, переделав из немецкого, т.к. наши форматы чисел и дат во многом похожи:

/*
 * Localized default methods for the jQuery validation plugin.
 * Locale: RU
 */
jQuery.extend(jQuery.validator.methods, {
    date: function(value, element) {
            return this.optional(element) || /^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(value);
    },
    number: function(value, element) {
            return this.optional(element) || /^-?(?:\d+|\d{1,3}(?: \d{3})+)(?:,\d+)?$/.test(value);
    }
});

Сохраните этот код в файл с именем methods_ru.js в каталог Scripts вашего MVC-приложения. Затем добавьте соответствующие ссылки на скрипт в представления, как в следующем примере:

<script src="@Url.Content("~/Scripts/methods_ru.js")" type="text/javascript"></script>

Замечание. Вам не нужно добавлять скрипт с локализованными сообщениями (например, messages_ru.js для русского языка), так как ASP.NET MVC и типы в пространстве имен System.ComponentModel.DataAnnotations используют свои собственные локализованные сообщения.

Progg it
comments powered by Disqus