Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Валидация на стороне пользователя поля decimal / 5 сообщений из 5, страница 1 из 1
13.06.2015, 18:02
    #38983281
Alex_studenticu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Валидация на стороне пользователя поля decimal
Доброго времени суток уважаемые форумчане. помогите со след вопросом:
В модели есть поле Price типа decimal:

Код: c#
1.
2.
3.
        [Required(ErrorMessage = "Заполните поле")]
        [Display(Name = "Цена")]
        public decimal Price { get; set; }




и соответственно подключена стандартная валидация на стороне пользователя.
т.к. были вопросы по культуре на машине которой пишу (стоит русская культура) то сделал следующее переопределение во вью (т.е. и точка и запятая срабатывает как валидное значение):


}
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
.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);
        



во избежание ошибки при валидации в контроллере, на вью еще добавил скрипт который точку меняет на запятую (если честно то мой подход попахивает некоторым мегакастылем, но как сделать пока лучше не знаю:()
Но столкнулся с огромной проблемой когда выкатил приложение на сервере, на котором стоит все английское и соответственно валидация меняется уже надо вводить точку...
и насколько я понимаю все мои эти танцы с бубном, были яйца выедененного не стоящие.
Я так понимаю надо убирать все моискрипты и делать чтобы была валидация проходила по умолчанию?
и еще вопрос при такой валидации выводить сообщение "The value '1.00' is not valid for Цена' как его перевести и какой атрибу за него отвечает?
...
Рейтинг: 0 / 0
13.06.2015, 21:10
    #38983311
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Валидация на стороне пользователя поля decimal
Написать custom validator
...
Рейтинг: 0 / 0
14.06.2015, 00:01
    #38983353
Calabonga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Валидация на стороне пользователя поля decimal
Alex_studenticu,

В статье Переключаем проверку ввода на русский язык или Knockout.Validation Localize (Globalize) я использую функцию проверки parseFloat. Можешь ее использовать в своем валидаторе.
...
Рейтинг: 0 / 0
15.06.2015, 12:31
    #38983901
VIT2708_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Валидация на стороне пользователя поля decimal
Alex_studenticu,

Может в web.config прописать
Код: plaintext
1.
<globalization culture="ru-RU" uiCulture="ru-RU"/>
...
Рейтинг: 0 / 0
18.06.2015, 09:53
    #38986520
bazaea
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Валидация на стороне пользователя поля decimal
на клиенте - оставить что бы пользователь мог ввести точку или запятую как разделитель дробной части. Это удобно и понятно пользователям. Учесть что если будут расчеты на клиентской стороне - то правильно парсить.

а дальше два пути:
1. Отправлять на сервер что-то определенное (. XOR ,) (что уже есть) + выставить нужную культуру - это уже предложили
2. Написать кастомный ModelBinder для decimal, который будет обрабатывать и то и то.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Валидация на стороне пользователя поля decimal / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]