Часть 13 – Адаптеры правил ASP.NET MVC 3 для jQuery Validation

Было бы странно, если типовые адаптеры пришлось бы создавать бы для каждого правила. Поэтому в ядре ASP.NET MVC 3 уже содержатся варианты для них. Давайте рассмотрим их.

Адаптер для правил без параметров

Данный адаптер предназначен для правил, у которых отсутствуют параметры и они используют только введенное пользователем значение. В качестве примеров можно привести проверки на соответствие жестко заданным в коде JavaScript форматам даты, времени, номера счета или кредитной карты. Также такой адаптер может быть использован при проверки на обязательное наличия значения ([Required]). Для его добавления используется код:

jQuery.validator.unobtrusive.adapters.addBool(adapterName, [ruleName]);
  • adapterName – имя адаптера;
  • ruleName – имя правила, по умолчанию равно имени адаптера.

Значение param, передаваемое в функцию реализующую правило проверки, будет всегда равно true.

Адаптер для правил с единственным параметром любого типа

jQuery.validator.unobtrusive.adapters.addSingleVal(adapterName, attribute, [ruleName]);
  • adapterName – имя адаптера;
  • attribute – имя атрибута, содержащего значение;
  • ruleName – имя правила, по умолчанию равно имени адаптера.

Значение param, передаваемое в функцию реализующую правило проверки, будет равно значению атрибута "data-val-[adapterName]-[attribute]".

Обратите внимание, что обе отмеченные выше функции позволяют отдельно задать имя правила. Таким образом различные атрибуты могут использовать одни и те же реализации на JavaScript. В итоге, такой подход может помочь создать наборы простых правил, из которых атрибуты будут выбирать нужные для построения своей логики.

    Адаптер для правил, ограничивающих значение (минимум, максимум или диапазон)

    jQuery.validator.unobtrusive.adapters.addMinMax(
       adapterName, minRuleName, maxRuleName,    
       minMaxRuleName, [minAttribute, [maxAttribute]]);
    • adapterName – имя адаптера;
    • minRuleName – имя правила для сравнения с минимальным значением;
    • maxRuleName – имя правила для сравнения с максимальным значением;
    • minMaxRuleName – имя правила, ограничивающее диапазон;
    • minAttribute – имя атрибута, содержащего минимальное значение;
    • maxAttribute – имя атрибута, содержащего минимальное значение.

    Выбор используемого правила, из указанных трех, осуществляется по принципу:

    • Правило minRuleName используется если присутствует только значение minAttribute. Оно и передается в качестве параметра param в функцию проверки.
    • Аналогично, правило maxRuleName используется при наличии только значения maxAttribute, которое также передается в качестве параметра param в функцию проверки.
    • Если получены оба значения (minAttribute и maxAttribute), то применяется правило minMaxRuleName. При этом, в реализующую его функцию передается массив из двух элементов (param[0] = minAttribute, param[1] = maxAttribute).

    Универсальный адаптер (для любых правил)

    jQuery.validator.unobtrusive.adapters.add(adapterName, [params], fn);
    • adapterName – имя адаптера;
    • [params] – массив имен параметров;
    • fn – функция для преобразования значений, полученных из HTML, в формат функции проверки.

    Данный вариант может задать адаптер для любой фу��кции проверки значения. Для атрибута ["equal"] можно реализовать вот такой аналог метода addBool():

    jQuery.validator.unobtrusive.adapters.add("equal", ["valuetocompare"], function (options) {
        options.rules["equal"] = options.params.valuetocompare;
        options.messages["equal"] = options.message;
    });

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

    Посмотрим на передаваемые options в объекты:

    • element – HTML элемент, к которому применено правило;
    • form – форма, в которой содержится данный элемент;
    • params – объект, содержащий поля с значениями запрошенных параметров HTML элемента;
    • message – текст сообщения об ошибке.

    Результат работы метода сохраняется в объектах:

    • rules["имя-правила"] – параметры для функции проверки. Может быть как отдельный параметр, так и массив значений любого требуемого формата.
    • options.messages["имя-правила"] - сообщение об ошибке или их массив.

    Теперь, ознакомившись с стандартными вариантами адаптеров, можно перейти к рассмотрению еще одного способа организации проверки на стороне клиента. Он позволит реализовать её для свойства Login.

    Pingbacks and trackbacks (3)+

    Добавить комментарий