Элегантный способ объединить проверку ASP.NET с JQuery

Как лучше всего совместить JQuery с моделью проверки на стороне клиента ASP.NET?

Я обычно избегал реализации модели проверки ASP.NET, потому что она всегда кажется излишней для того, что я делал. Для сайта, над которым я сейчас работаю, я просто собираю некритичные пользовательские данные, и мне нужна лишь базовая проверка. Я не хочу, чтобы сообщения появлялись в DOM или что-то в этом роде. Мне всегда было трудно заставить это выглядеть правильно.

Но теперь мне нужно реализовать что-то более элегантное. Что я хочу использовать в JQuery, так это умные поисковые выражения вроде «скажите мне, установлен ли хотя бы один из этих флажков». Я новичок в JQuery, но я думаю, что это примерно одна строка JQuery и намного сложнее в традиционной модели ASP.NET.

Поэтому я хочу в полной мере использовать возможности JQuery, но не полностью разрушать модель проверки ASP.NET.

На данный момент мой лучший подход (который в значительной степени идет за спиной ASP.NET):

$('#<%=btnJoinMailingList.ClientID %>').bind('click', function(event) {

   if (...) {
       alert("You must enter a name");
       return false;
   }     
   return true;
});

Какой здесь подход лучше? Есть ли рекомендуемые плагины для JQuery?

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
12
0
12 857
3

Ответы 3

Веб-формы ASP.NET и модель проверки jQuery очень и очень похожи, IMHO, в том, что оба являются клиентскими, и реализация одного из них не обязательно подрывает другой. Единственная реальная разница будет заключаться в том, что за кулисами валидаторы ASP.NET заставят метод Page.Validate() возвращать false, если у вас есть непроверенное поле.

Вы можете вручную настроить свои собственные элементы управления проверкой, а затем вызвать такое же поведение, но, как вы сами заявили, это может быть излишним.

jQuery также имеет собственный плагин Validator, на который вы, возможно, захотите посмотреть: http://docs.jquery.com/Plugins/Validation/Validator.

ASP.NET имеет множество элементов управления проверкой, одним из которых является CustomValidator.
. Вы можете дать ему специальную функцию JavaScript, которая использует jQuery и возвращает true или false через аргумент. Вы можете использовать этот элемент управления для автоматического отображения сообщения об ошибке или просто запустить код jQuery и обработать отображение вручную.

Aspx:

<asp:CustomValidator ID = "CustomValidator1" runat = "server" Display = "None"
                     ClientValidationFunction = "checkTextareaLengths">
</asp:CustomValidator>

JavaScript:

function checkTextareaLengths(source, args){
  args.IsValid = true;
  $('textarea').each(function(){
    if ($(this).text().lenght > 400)
      args.IsValid = false;
  });
}

Примечание: я не думаю, что сработает просто возврат true или false - вам нужно принять 2 параметра функции (отправитель, args) и установить args.IsValid = ok; в конце, чтобы хорошо поработать со средой проверки веб-форм.

chris 06.04.2011 22:40

@chris - Совершенно верно - я знаю, что знаю. Знаете что, я обновлю ответ!

Kobi 06.04.2011 22:41

@chris - Готово! В свою защиту я смутно помню, что возвращение true или false действительно сработало для меня, но это официальный метод, и он определенно лучше (я очень надеюсь, что не рекомендовал ничего глупого - этот вопрос получил 5700 просмотров!). Спасибо.

Kobi 06.04.2011 22:48

Кроме того, я бы изменил "arguments" на "args", чтобы его не путали с ключевым словом arguments в javascript ...

drogon 31.05.2013 22:52

Валидатор ASP.NET - это диапазон с дополнительными атрибутами. С помощью jquery вы можете получить доступ ко всем валидаторам на странице или отфильтровать их по любым критериям. поддерживается jquery. Для принудительной проверки с помощью javascript вызовите функцию ValidatorValidate. Например:

function validate_step(step_element) {
        // find all validators on step_element and force validation
        var validators = $(step_element).find("span[controltovalidate]");
        var stepIsValid = true;
        validators.each( function() {
           ValidatorValidate(this); stepIsValid &= this.isvalid;
        });
        return stepIsValid;
    }

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