Подтвердить что ты не робот

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

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

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

Но теперь мне нужно реализовать нечто более элегантное. То, что я хочу использовать в JQuery, - это умные выражения поиска, такие как "скажите мне, проверен ли хотя бы один из этих флажков". Я новичок в JQuery, но я думаю, что это примерно 1 строка 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" сайт и не имею времени, чтобы углубиться в этот интересный новый материал.

4b9b3361

Ответ 1

В 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;
  });
}

Ответ 2

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

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

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

Ответ 3

Валидатор 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;
    }