@IlgizVafin

AngularJS. Как правильнее организовать валидацию полей?

Всем привет!

AngularJS + ASP.NET Web API

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

Клиентская валидация форм реализуется с помощью стандартных директив: required, min, max, pattern и т.п. + кастомная логика в своих директивах (зависимости между полями, например).

Нет четкого понимания как придти к оптимальному варианту, который упростит поддержку валидационной логики. В идеале бы иметь структуру, при которой вся логика была бы сосредоточена в одном месте!
  • Вопрос задан
  • 612 просмотров
Решения вопроса 1
FINTER
@FINTER
Дело в том, что идеологически "серверная" валидация и UX валидация -- разные вещи. UX валидация скорее для увеличения удобства заполнения полей, а серверная валидация для принятия бизнес решения. Часть кода действительно можно совместить, но лично я пишу всегда отдельные логики для фронта и бека. Да, это чуть дольше, но дьявол в мелочах =)
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
miraage
@miraage
Старый прогер
В AngularJS так нельзя. Это Вам не meteor/derby.
Ответ написан
Комментировать
Razaz
@Razaz
Asp.Net junkie
1. Вариант - T4 шабоны, которые будут автоматом генерить js с правилами валидации по вашим моделям. Откручиваете что-то типа ModelMetadataProvider и натравливаете его на свои модели. Ну или таск для Gulp напилить, который будет сканить исходники и по ним генерить. Мы так для локализации делаем. Все resx через T4 перегоняются в js и используются одни и те же ресурсы, без необходимости что-то дублировать.

2. В рантайме отдаете валидационные правила на клиента. Смотрите в сторону Collection+Json. Для WebApi есть https://github.com/WebApiContrib/CollectionJson.Net
Ответ написан
Комментировать
zo0m
@zo0m
full stack developer
Может в условиях когда не успеваете одно за другим дотягивать, сделать 2 вещи.
1. оставить минимум клиентской валидации. (тут можно остановится). Да юзерам будет чуть менее удобно, зато не будет нерабочих форм.
2. еще можно в качестве временного костыля, сделать веб-сервис\rest и валидировать на сервере. (только таймауты сделайте, чтоб не каждый юзерский чих дергал такую операцию)

------
Хороший ответ дал Finter.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
02 нояб. 2024, в 21:08
2000000 руб./за проект
02 нояб. 2024, в 20:34
40000 руб./за проект
02 нояб. 2024, в 20:05
800 руб./в час