Почему я должен использовать PropertyProxyValidator? ASP.NET

Я понимаю, что PropertyProxyValidator интегрируется с пользовательским интерфейсом ASP.NET. Но он не может выполнить проверку на стороне клиента. Как это может отличаться от добавления метки в пользовательском интерфейсе и заполнения ошибок на стороне сервера?

Кроме того, если я использую блок приложения проверки, какие подходы вы предлагаете для проверки на стороне клиента, если я не хочу дублировать правила на стороне сервера и на стороне клиента?

2 ответа

Решение

PropertyProxyValidator не помогает вам с проверкой на стороне клиента. Я думаю, что основное отличие от "добавления метки в пользовательском интерфейсе и заполнения ошибок на стороне сервера" заключается в том, что PropertyProxyValidator позволяет иметь ошибки проверки рядом с проверенным элементом управления.

С использованием PropertyProxyValidator много работы. Все должно быть подключено. Лучшее решение - создать простой метод расширения и зарегистрировать PropertyProxyValidator в коде позади. Это делает все намного проще. Вот пример:

protected override void OnPreInit(EventArgs e)
{
    this.LastNameTextBox.For<Person>().AddValidator(p => p.LastName);
    base.OnPreInit(e);
}

Вы можете найти больше информации об этом подходе здесь.

Конечно, в этом случае это все еще сторона сервера, но это решение значительно упрощает включение проверки на стороне клиента в дальнейшем, поскольку оно централизует создание валидаторов.

Randy Levy уже ссылался на эту статью. Это единственное упоминание о проверке на стороне клиента с помощью VAB, которое я нашел в Интернете.

Как вы говорите, использование PropertyProxyValidator мало чем отличается от использования валидатора ASP.NET (или использования метки) на стороне сервера. Основным преимуществом является интеграция с блоком приложения проверки. (Предполагая, что вы видите это как преимущество.:))

Если вы уже создали свои правила с использованием VAB, вы можете использовать PropertyProxyValidator для их интеграции в ASP.NET. Если у вас многоуровневое приложение, это позволит вам определить валидации один раз (скажем, используя атрибуты на сущностях) и выполнить валидацию на стороне сервера ASP.NET. Если проверка пройдена, то можно вызвать бизнес / сервисный уровень, где можно будет выполнить ту же проверку. Это позволяет централизовать проверку в одном месте (повышенная удобство обслуживания) и может сохранять вызовы на уровне бизнеса / обслуживания (выигрыш в производительности).

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

Другие вопросы по тегам