HttpModule, не работающий с Visual Studio

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

Чтобы реализовать ваш вариант использования, просто добавьте data атрибутов в каждое поле ввода с правилами, которые вы хотите применить к нему. В лучшем случае используйте формат json в кодировке URL, так что вам просто нужен один атрибут data для каждого поля ввода. E. g.:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>validate test</title>
</head>
<body>
<form id="myForm" name="myForm" method="post" action="www.example.com/my-url">
    <input type="text" name="txt1" data-rules="%7B%22required%22%3Atrue%2C%22minlength%22%3A2%2C%22maxlength%22%3A10%7D" />
    <input type="text" name="txt2" data-rules="%7B%22required%22%3Atrue%2C%22minlength%22%3A2%2C%22maxlength%22%3A10%7D" />
    <input type="number" name="number1" data-rules="%7B%22required%22%3Atrue%2C%22number%22%3Atrue%2C%22min%22%3A1%2C%22max%22%3A999%7D" />
    <input type="email" name="email1" data-rules="%7B%22required%22%3Atrue%2C%22email%22%3Atrue%2C%22minlength%22%3A20%7D" />
    <input type="email" name="email2" data-rules="%7B%22required%22%3Atrue%2C%22email%22%3Atrue%2C%22minlength%22%3A20%7D" />
</form>
<script type="text/javascript">
    var $field = null;
    var rules = {};

    $('#myForm input, #myForm textarea').each(function (index, field) {
        $field = $(field);
        rules[$field.attr('name')] = JSON.parse(decodeURIComponent($field.attr('data-rules')));
    });

    $('#myForm').validate(rules);
</script>
</body>
</html>

Основная технология проста:

  1. Создайте свои поля с атрибутом `data-``.
  2. Обведите каждое поле ввода, чтобы получить правила, которые вы хотите применить к нему.
  3. Примените собранные вами правила к элементу формы

Вы также можете использовать группы ввода с одинаковыми валидаторами, например, e. г. используя классы для него и предопределенные переменные JavaScript с объектом rules. Я думаю, у вас есть идея, как изящно лениться; -)

20
задан blowdart 8 June 2009 в 09:07
поделиться

2 ответа

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

0
ответ дан 29 November 2019 в 23:45
поделиться

Cassini, веб-сервер разработки, поставляемый с IIS, использует синтаксис модуля IIS6, поэтому вы должны продублировать добавление модуля следующим образом

<system.web>
  <httpModules>
    <add name="MinimizeModule" type="ClipperHouse.UrlMinimizer.MinimizeModule" />
  </httpModules>
</system.web>


<system.webServer>
  <validation validateIntegratedModeConfiguration="false"/>
  <modules>
    <remove name="MinimizeModule" />
    <add name="MinimizeModule" type="ClipperHouse.UrlMinimizer.MinimizeModule" 
         preCondition="managedHandler" />
  </modules>
</system.webServer>

Обратите внимание, что я также добавил предварительное условие в ваши настройки IIS7

40
ответ дан 29 November 2019 в 23:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: