Резюме: Подробные объяснения использования управления веб -контролем ASP+ Verification.
Оглавление
Краткое введение
начиная
Когда это происходит?
Последовательность проверки на стороне сервера
Проверка клиента
Эффективные правила и полезная информация об ошибках
Включенные, видимые и отображающие свойства
CustomValidator Control
Какие элементы управления могут быть проверены?
Конец
-------------------------------------------------- ------------------------------------------------------ ------------------------
Краткое введение
В этой статье подробно подробно объясняется метод работы управления проверкой ASP+. Если вы хотите создать сложную страницу, которая содержит контроль проверки, или расширить структуру проверки, рекомендуется прочитать эту статью. Если вы хотите научиться использовать контроль проверки или решить, использовать ли контроль проверки, см. «Пользователь ASP+ Enter Verification (английский)».
начиная
Мы знаем, что важно понимать проверку в течение всего процесса разработки ASP+. Посмотрите на большинство современных коммерческих веб -сайтов, вы обнаружите, что на этих сайтах есть много форм, которые, очевидно, выполняются путем выполнения большого количества рукописного кода. Написание кода проверки не интересная работа. Если вы напишете код для отображения таблицы данных или динамически генерировать диаграммы, он может быть очень привлекательным, но никто не может подтвердить с его коллегами, что этот «крутой» метод может запретить пустое значение в поле «Имя».
По другим причинам проверка веб -приложений также очень неприятная. HTML 3.2 имеет много ограничений на контент, который вы можете управлять, или обратную связь, которые вы можете получить от пользователя, поэтому его нельзя применить к методам, которые можно использовать для более полноценного клиента, таких как запрещение пользователей вводить определенные символы или издавая звук. Использование сценария браузера может дать более мощную проверку. Тем не менее, этот метод трудно подтвердить, потому что браузер клиента не обязательно является сценарием, а вредоносные пользователи могут обойти его. Поэтому, чтобы обеспечить безопасность сайта, необходимо провести ту же проверку сервера.
При разработке ASP+наше первоначальное намерение состоит в том, чтобы использовать только один элемент управления для проверки обработки. Но когда он был разработан, я обнаружил, что это желание не может быть достигнуто. Мы исследовали большое количество входных форм данных, чтобы найти решение, которое можно применить к как можно большему количеству форм. Мы обнаружили, что таблица ввода данных имеет много интересных функций:
Хотя информация об ошибках или значки часто рядом с входными элементами, они почти всегда расположены в разных ячечах таблицы.
На странице часто есть область, чтобы суммировать все ошибки.
Многие сайты включают клиентские сценарии, чтобы обеспечить более быструю обратную связь, одновременно предотвращая проезд между сервером.
Многие сайты, содержащие клиентские сценарии, отображают информационные поля, когда есть ошибка.
Будет проверен не только ввод текста, но также будет подтверждена список отброса -Down -Down и кнопка с одной -выбеждением.
Если поле пустое, сайт обычно показывает различную информацию или значки, когда запись недействительна.
Многие эффективные экзамены могут быть хорошо заменены на часто используемые выражения.
Проверка обычно основана на результатах сравнения между двумя входами.
90% или более 90% задач проверки являются некоторыми распространенными операциями, такими как проверка имени или почтового кода. Большинство сайтов по -прежнему повторяют эти задачи.
Поскольку разница между сайтами обычно слишком велика, идеальное решение не может быть получено для выполнения всех задач проверки каждого сайта.
Принимая во внимание все вышеперечисленные ситуации, конечные решения включают пять элементов управления устройством проверки, управления проверками и интеграцией с объектами страницы. В то же время очевидно, что решение необходимо расширить, и для сотрудничества на клиенте и сервере необходим API.
Мы обнаружили, что нам, казалось, нужен был более крупный набор инструментов во время различных проверок исследований. В большинстве компонентных сред, таких как Microsoft & Reg; К счастью, в Microsoft & Regwork существует волшебное наследство;
Большинство из этих элементов управления реализованы в их общедоступном родительском уровне Basevalidator. Вы также можете выполнить различные задачи от Basevalidator или других элементов управления. Фактически, даже если Basevalidator слишком ленив, чтобы достичь своих собственных текстовых атрибутов, он унаследован от атрибутов метки.
Когда это происходит?
Очень эффективно понимать последовательность событий при обработке страницы, содержащей страницу веб -управления. Если условие проверки является необязательным, вам необходимо точно понять, когда клиент и сервер проверены. Если вы хотите написать процедуру проверки самостоятельно, это может быть очень время, затрагивающее или побочные эффекты. В то же время, также важно понимать время на вызове рутины проверки.
Во -первых, давайте посмотрим на сервер.
Последовательность проверки на стороне сервера
Важно понять период достоверности страницы. Если вы привыкли обрабатывать форму в Visual Basic или аналогичных функциональных клиентских инструментах, вам нужно потратить определенное время, чтобы понять. Все объекты на странице и странице не эффективны при взаимодействии с пользователями, хотя иногда это то же самое.
Ниже приведена упрощенная последовательность событий при первом посещении страницы:
Создайте страницу и ее управление на основе файла ASPX.
Запускает событие page_load.
Страница и атрибуты управления хранятся в скрытом поле.
Страницы и элементы управления преобразуются в HTML.
Отбросьте все.
Теперь, когда пользователь нажимает кнопку или аналогичный элемент управления, он вернется на сервер, а затем выполнит аналогичную последовательность событий. Эта последовательность называется последовательности возврата:
Создайте страницу и ее управление на основе файла ASPX.
Восстановите страницу и атрибуты управления из скрытого поля.
Введите управление страницей обновления в соответствии с пользователем.
Запускает событие page_load.
Триггер изменений событий уведомления.
Страница и атрибуты управления хранятся в скрытом поле.
Страницы и элементы управления преобразуются в HTML.
Снова отбрасывайте все.
Почему бы нам не держать все объекты в памяти? Потому что веб -сайты, установленные с ASP+, не могут обрабатывать очень большое количество пользователей. Следовательно, память сервера сохраняет только контент для обработки немедленно.
Когда проверка сервера -сторона? При первом получении информации о странице проверка сервера не будет выполнена вообще. Большинство конечных пользователей очень серьезны.
В последовательности событий возвращения проверка будет выполнена между шагом 3 и шагом 4. Другими словами, проверка происходит после атрибутов управления загрузкой данных от пользователя, но до большей части количества выполнения кода. Это означает, что при написании пользовательских событий это обычно можно использовать для проверки. При нормальных обстоятельствах вы захотите сделать это.
Недостатком проверки в этот момент является: если вы хотите изменить некоторые атрибуты, которые влияют на проверку путем программирования, будет слишком поздно. Например, вы обнаружите, что если вы используете код, чтобы включить или отключить атрибуты управления проверкой или изменить управление проверкой, вы не увидите никакого эффекта перед обработкой страницы. Этой проблемы можно избежать через следующие два метода:
Измените атрибут перед проверкой.
Повторно -то есть контроль после изменения атрибута.
Оба метода должны использовать эффективные атрибуты и методы проверки на объекте страницы.
Page API
Объекты страниц включают некоторые важные атрибуты и методы, связанные с проверкой сервера. Таблица 1 суммирует эти атрибуты и методы:
Таблица 1. Атрибуты и методы объекта страницы
Атрибут или описание метода
Атрибут Isvalid является наиболее полезным атрибутом. Этот атрибут может проверить, эффективна ли вся форма. Эта проверка обычно выполняется перед обновлением базы данных. Только все объекты валидаторов действительны, атрибут верно, а значение не хранится в кэше.
Валидаторы приписывают сбор всех объектов проверки этой страницы. Это набор объектов, которые реализуют интерфейс Ivalidator.
Метод значения вызывает метод при проверке. Метод выполнения по умолчанию в объекте страницы состоит в том, чтобы обратиться к каждому устройству проверки и требовать оценки устройства проверки.
Коллекция Validators очень полезна для многих задач. Этот набор представляет собой набор объектов, которые реализуют интерфейс Ivalidator. Причина, по которой я использую объект, не является управлением элементом управления, потому что объект страницы обращает внимание только на интерфейс Ivalidator. Поскольку все проверки обычно используются для достижения некоторых визуальных элементов управления Ivalidator, любой должен иметь возможность использовать любой объект проверки и добавить объект проверки на страницу.
Интерфейс Ivalidator содержит следующие атрибуты и методы:
Таблица 2. Атрибуты и методы интерфейса Ivalidator
Атрибут или описание метода
Атрибут isvalid указывал, прошел ли прошел тест достоверности, выполняемый отдельным объектом проверки. Вы можете вручную изменить значение после проверки.
Атрибут ErrorMessage вводит ошибку для проверки объекта, который будет проверен, и ошибки, которые могут быть отображены пользователю.
Метод проверки проверяется на обоснованность объекта Verification для обновления его значения ISVALID.
Вы можете использовать этот интерфейс для выполнения некоторых интересных задач. Например, чтобы сбросить страницу в эффективное состояние, используйте следующий код (например, пример, показанный в C#):
Значение Ivalidator;
Foreach (val в валидаторах) {
valuevalid = true;
}
Чтобы повторно рассказать всю последовательность проверки, используйте следующий код:
Значение Ivalidator;
Foreach (val в валидаторах) {
Val.validate ();
}
Если у вас есть Beta 1 Edition или более высокие версии, вы также можете вызвать метод значения только для объекта страницы, чтобы можно было выполнить ту же задачу. Чтобы внести некоторые изменения перед проверкой, метод значения может быть покрыт. В этом примере показана страница, содержащая устройство проверки, которое открывается или выключен в соответствии со значением флажества:
Открытый класс условной: страница {
public htmlinputcheckbox chksameas;
Public ResearchfieldValidator RfvalShipAddress;
Защищенный переопределение void validate () {) {)
// просто проверьте адрес доставки (если отличается от адреса оплаты)
Bool enableShip =!
rfvalshipaddress.enabled = enableShip;
// сейчас выполняет проверку
base.validate ();
}
}
Проверка клиента
Если ваша страница включена в соответствии с проверкой клиента, во время поездки обратно будет происходить совершенно другая последовательность событий. Проверка клиента использует клиент JScript & Reg; Проверка не требует каких -либо бинарных компонентов.
Хотя стандартизация языка JScript хорошо сделана, модель объекта документа (DOM), используемая в документации HTML в браузере (DOM), не имеет широко используемых стандартов. Следовательно, проверка клиента выполняется только в интернет -Explorer 4.0 и более высоких версиях, поскольку проверенный объект - это интернет -проводник DOM.
С точки зрения сервера проверка клиента только означает, что элемент управления проверкой отправляет различный контент в HTML. Кроме того, инцидентная последовательность точно такая же. Проверка сервера -сторона по -прежнему выполняется. Хотя это кажется излишним, это очень важно, потому что:
Некоторые элементы управления проверкой могут не поддерживать сценарий клиента. Существует хороший пример: если вы хотите использовать функции проверки CustomValidator и сервера одновременно, но нет никакой функции проверки клиента.
Меры предосторожности. Некоторые люди могут легко получить страницу, содержащую скрипт, а затем отключить или изменить страницу. Вы не должны использовать свой скрипт, чтобы не допустить ввода плохих данных в вашей системе, но только для пользователей, чтобы получить более быструю обратную связь. Поэтому, если вы хотите использовать CustomValidator, вы не должны предоставлять функцию проверки клиента без соответствующих функций проверки сервера.
Каждый элемент управления проверкой может убедиться, что стандартный блок сценария клиента отправляется на страницу. Фактически, это лишь небольшая часть кода, которая содержит ссылку на код в библиотеке сценариев webuivalidation.js. Этот файл библиотеки сценариев содержит всю логику, проверенную клиентом.
О библиотеке сценариев
Поскольку проверка сценария веб -управления находится в библиотеке сценариев, код, проверенный всеми клиентами, не требуется напрямую отправлять его на страницу, хотя он, похоже, выполняется на поверхности. Ссылки на файл основного сценария аналогичны следующему:
<сценарий языка = javaScript
src =/_ aspx/1.0.9999/script/webuivalidation.js> </script>
По умолчанию файл скрипта будет установлен в каталоге ROOT по умолчанию в каталоге _aspx, и использует сценарий, включающий инструкцию, которая начинается с положительной диагональной линии. Ссылка показывает, что каждый отдельный объект не должен включать библиотеку сценариев, и все страницы на одном компьютере могут ссылаться на один и тот же файл. Вы заметите, что в этом пути также есть номер версии публичного языка, так что разные версии выполнения могут работать на одном компьютере.
Если вы посмотрите на свой каталог виртуальных корневых корней по умолчанию, вы найдете файл и просмотрите контент. Положение этих файлов указана в файле config.web. File config.web - это файл XML для большинства настроек ASP+. Ниже приведено определение позиции в этом файле:
<webcontrols
Clientscriptslocation =/_ aspx/{0}/script/
/>
Поощряйте вас прочитать сценарий, чтобы вы могли понять события, которые происходят глубоко. Тем не менее, рекомендуется не изменять эти сценарии, потому что их функции тесно связаны с конкретными версиями выполнения. Когда версия обновляется, эти сценарии также могут быть обновлены соответствующим образом. Если конкретные проекты должны быть изменены, сначала резервную копию этих сценариев, а затем укажите свой проект на файл резервного копирования, метод состоит в том, чтобы использовать частный файл config.web для замены позиции этих файлов. Если строка содержит команду Format {0}, номер версии заменит инструкцию, когда будет заменен номер версии времени выполнения. Лучше всего изменить эту позицию на относительную ссылку или абсолютную ссылку.
Отключить проверку клиента
Иногда вы можете не захотеть проверять клиентов. Если количество полей ввода мало, проверка клиента может быть не очень полезной. В конце концов, у вас должна быть логика, которая требует одного раундового сервера каждый раз. Вы обнаружите, что динамическая информация о клиенте окажет негативное влияние на ваш макет.
Чтобы отключить проверку клиента, используйте страницу ClientTarget = Downlevel. Эта инструкция похожа на начало файла ASPX:
< %@page language = c# clientTarget = downlevel %>
Значение по умолчанию этой инструкции является автоматическим, что указывает на то, что вы проверяете только клиента в Microsoft Internet Explorer 4.0 или выше.
Примечание. К сожалению, в бета -1 эта инструкция не только отключена для проверки, и в то же время все веб -элементы управления используют теги HTML 3.2 для обработки, что может иметь неожиданные результаты. Окончательная версия обеспечивает лучший способ контроля этой проблемы.
Последовательность событий клиента
Эта последовательность - последовательность событий, которая возникает, когда страница, содержащая проверку клиента:
При загрузке браузера на странице необходимо инициализировать каждое управление проверкой. Эти элементы управления отправляются в виде знака <pran>, а их функции HTML являются наиболее близкими к функциям на сервере. Самое главное, что в настоящее время все входные элементы, на которые ссылается устройство проверки, будут «повешены». Условный входной элемент изменит свое событие клиента, чтобы вызвать подпрограмму проверки при введении изменения.
Код в библиотеке скриптов будет выполняться, когда пользователь использует клавишу вкладки для переключения между каждым полем. Когда определенное независимое поле будет изменено, условия проверки будут переоценены, а устройство проверки будет видно или невидимо по мере необходимости.
Когда пользователь пытается отправить форму, все проверки будут оценены. Если все эти проверки эффективны, форма будет отправлена на сервер. Если в одном или нескольких местах возникнет ошибка, возникнет следующая ситуация:
Представление было отменено. Форма не отправлена на сервер.
Все неверные проверки видны.
Если содержит резюме для проверки Showmumary = true, все ошибки из контроля проверки будут собраны, и содержимое обновляется этими ошибками.
Если резюме для проверки содержит ShowMessagebox = true, он будет собирать ошибки и отобразить эти ошибки в информационном поле клиента.
Потому что контроль проверки клиента выполняется при входе или когда. Обратите внимание, что после подачи эти элементы управления проверкой все равно будут переоценены на сервере.
Клиент API
Существует небольшой API, который можно использовать в клиенте для достижения различных эффектов в вашем собственном клиентском коде. Поскольку некоторая процедура не может быть скрыта, теоретически, вы можете использовать клиента для проверки всех переменных, характеристик и функций, определенных клиентом. Однако многие из них могут быть изменены. Следующее обобщает объект клиента, который мы рекомендуем вам использовать.
Таблица 3. Клиентский объект
Имя типа Описание
PAGE_ISVALID BOOLEAN переменная указала, является ли страница действительна в настоящее время. Проверка сценариев всегда сохраняет переменную последней.
Массив элементов page_validator Это массив, содержащий все проверки на странице.
Page_validationActive логические переменные указывают, следует ли проверить это. Установите эту переменную на false может быть подтверждено программированием.
Атрибуты ISVALID Boolen Attribites У каждого устройства проверки клиента есть свойство, указывая, является ли устройство проверки в настоящее время действительным. Обратите внимание, что в версии PDC этот атрибут смешан с Isvalid.
Обход проверки клиента
Одна задача, которую вам часто нужно выполнить, - добавить кнопку «Отмена» или кнопку навигации на странице. В этом случае, даже если на странице есть ошибки, вы также можете использовать кнопку для отправки страницы. Поскольку клиентская кнопка Onclick происходит перед событием в форме, она может избежать представления проверки и обхода проверки. Следующее показывает, как использовать управление изображением HTML в качестве кнопки «Отмена», чтобы выполнить задачу:
<input type = image Runat = сервер
Значение = отмена
Onclick = page_validationActive = false;
onserverclight = cmdcancel_click>
Используйте кнопку или управление ImageButton, чтобы выполнить некоторую путаницу, потому что событие OnClick предполагает, что это событие -сторона сервера с тем же именем. Вы должны установить это событие в сценарии клиента:
<Asp: imagebutton runat = server id = cmdimgcancel
AlternateText = Cancel
Onclick = cmdcancel_click/>
<сценарий языка = javascript>
Document.all [cmdimgcancel] .onclick =
новая функция (page_validationActive = false;);
</script>
Другой метод решения этой проблемы - установить определенные настройки кнопки «Отмена», чтобы он не запустил событие отправки в сценарии клиента при возвращении. HTMlinputButton и Linkbutton Controls являются примерами.
Специальный эффект
Другое распространенное требование состоит в том, что в дополнение к информации об ошибках, отображаемой самим устройством проверки, необходимы некоторые другие эффекты. В этом случае любая модификация, которую вы вносите, должна быть выполнена одновременно на сервере или клиенте. Предположим, вам нужно добавить метку, чтобы изменить цвет в зависимости от того, является ли вход действительным. Ниже приведено, как реализовать эту задачу на сервере:
Открытый класс ChangeColorpage: Page {
Общественный ярлык lblzip;
Общедоступное значение regulaxpressionValidator;
Защищенный переопределение void everoad (eventargs e) {{
lblzip.forecolor = valzip.isvalid?
}
}
Все вышеперечисленные методы идеальны, но до тех пор, пока вы изменяете проверку выше, вы обнаружите, что, если вы не выполните ту же операцию на клиенте, она будет выглядеть очень непоследовательной. Структура проверки позволит вам избежать многих таких двойных эффектов, но она не может избежать других эффектов, которые вы должны достичь одновременно на клиенту и сервере. Ниже приведен фрагмент, который выполняет ту же задачу на клиенте:
<ASP: LABEL ID = LBLZIP RUNAT = SERVER
Текст = почтовый индекс:/>
<ASP: TextBox id = txtzip Runat = Server
Onchange = txtziponchange ();
<Asp: routmentxpressionvalididator id = valzip runat = server
Controltovalidate = txtzip
errormessage = неверный почтовый код
ValidationXpression = [0-9] {5} /> <br>
<сценарий языка = javascript>
Функция txtziponchange () {{) {
// Если проверка клиента не будет в действии, она не выполнит никаких операций
ifof (page_validators) == undefined) return;
// Измените цвет этикетки
lblzip.style.color = valzip.isvalid?
}
</script>
Бета -1 клиент API
Для бета -1 издание некоторые функции, которые можно вызвать из сценария клиента, будут вызывать другие ситуации.
Таблица 4. Функция из вызова клиентского скрипта
Имя Описание
ValidatorValidate (val) использует клиентское устройство проверки в качестве входа. Заставьте устройство проверки проверить его вход и обновить его дисплей.
Varidatorenable (val, включить) Получите устройство проверки клиента и логическое значение. Включить или отключить устройство проверки клиента. Если он отключен, устройство проверки клиента не будет оценено, а валидатор клиента всегда будет действительным.
ValidatorHookupControl (управление, VAL) получил входной элемент HTML и устройство проверки клиента. Измените или создайте событие изменения элемента, чтобы устройство проверки могло быть обновлено во время изменения. Эта функция подходит для настраиваемых проверок на основе нескольких входных значений.
Его специальное назначение - включить или отключить устройство проверки. Если вы хотите проверить, что вы вступаете в силу только в определенных обстоятельствах, вам может потребоваться одновременно изменить статус активации на сервере и клиентах, в противном случае вы обнаружите, что пользователь не может отправить страницу.
Ниже приведен выше пример плюс поле.
Открытый класс условной: страница {
public htmlinputcheckbox chksameas;
Public ResearchfieldValidator RfvalShipAddress;
Защищенный переопределение void validate () {) {)
Bool enableShip =!
rfvalshipaddress.enabled = enableShip;
base.validate ();
}
}
Ниже приведен код эквивалента клиента:
<input type = флажки Runat = Server Id = CHKSAMEAS
Onclick = onchangesameas ();> То же самое, что и адрес оплаты <br>
<сценарий языка = javascript>
Function onChangesameas () {
var Entleship =!
Validatorenable (rfvalshipAddress, inebleShip);
}
</script>
Эффективные правила и полезная информация об ошибках
Каждое устройство проверки показывает конкретную информацию об ошибке о конкретных условиях в определенных элементах управления. Есть некоторые правила, которые подтверждают, является ли это действительным.
Все пустые проверки (за исключением требуемого FieldValidator) считаются действительными. Если пустое значение является недействительным, вам обычно нужен необходимый FieldValidator и другой проверку. Вы должны сделать это, потому что в целом вы всегда хотите показать различную информацию об ошибках на пустое устройство и эффективность. Вы также можете использовать неясную информацию, такую как «вы должны ввести значение, и это значение должно быть от 1 до 10».
Другие специальные правила, используемые, когда поле ввода не может быть преобразовано в указанный тип данных, связан с сравнением и диапазоном. Процесс оценки достоверности CompareValidator ControlTocompare Указывает, что процесс оценки достоверности, как описано ниже:
Если поле ввода, на которое ссылается Controltovalidate, является пустым, оно эффективно.
Если поле ввода, на которое ссылается Controltovalidate, не может быть преобразовано в требуемый тип данных, оно недействительно.
Если поле ввода, на которое ссылается ControlTocompare, не может быть преобразовано в требуемый тип данных, оно действителен.
Поле ввода преобразуется в требуемый тип данных и сравнивается.
Третий шаг выглядит немного непоследовательным. Причина этого заключается в том, что если устройство проверки проверяет эффективность нескольких полей одновременно, трудно написать значимую информацию об ошибках для устройства проверки. Независимое устройство проверки должно использоваться для сообщения о ситуации с ошибкой в поле ввода ControlTocompare. RangeValidator имеет аналогичные методы работы, с максимальными и минимальными свойствами.
Включенные, видимые и отображающие свойства
Разница между включенными, видимыми и отображающими свойствами устройства проверки может быть не очень очевидной.
Display = None можно использовать для указания, что устройство проверки не отображает непосредственно какого -либо контента, но все еще оценивается, все еще влияет на общую эффективность и все еще может поставить ошибки в сводку клиента и сервера. Для проверки клиента эти значения определяются для использования характеристик видимого стиля или использования характеристик стиля дисплея для открытия или закрытия устройства проверки. Для проверки сервера -Display = Dynamic означает, что вход не отображает какого -либо контента, когда вход действителен, а Display = Static представляет пространство, которое не изменяется. Последний настройка должна быть сложена в отсутствие содержимого, когда ячейка, которая содержит только устройство проверки в таблице, действительна.
Почему не только использовать Visible = false, чтобы сделать устройство проверки видимым? В ASP+видимый атрибут управления имеет много значений: управление visible = false не будет обрабатываться или отображаться вообще. Именно из -за этого значения Visible = false из устройства проверки означает, что не только не отображает какого -либо контента, но и не может быть использован. Это устройство проверки не будет оцениваться, не повлияет на обоснованность страницы и не будет помещено в реферат.
Включено нейтральное. В большинстве случаев эффект enabled = false и visible = false точно такой же. В издании Beta 1 или более высокой версии существует важное различие: при проверке клиента устройство проверки отключений по -прежнему будет отправлено в браузер, но оно находится в отключенном состоянии. Вы можете использовать функцию Validatoreable в сценарии клиента для активации устройства проверки.
При использовании видимых или включенных для управления, чтобы проверить, обратите внимание на порядок заказа на вышеуказанном сервере. Или изменить перед проверкой или повторно проверить после изменения. В противном случае их значения Isvalid не будут отражать изменения в атрибутах.
CustomValidator Control
Самый простой способ расширить структуру проверки - использовать управление CustomValidator. Этот элемент управления может использоваться для выполнения проверки, которые не могут быть выполнены другие элементы управления проверкой, но они также могут выполнять проверки, которые необходимо получить доступ к информации на сервере (например, базы данных или веб -службы).
Если добавляется CustomValidator только с одной функцией проверки сервера, вы заметите, что устройство проверки не участвует в проверке клиента. Когда пользователь переключается между каждым полем с ключом TAB, CustomValidator не будет обновляться, а сервер круглогов должен выполнять свою проверку за один раз. Если вы хотите использовать CustomValidator для выполнения проверки, которая не требует никакой информации на сервере, вы также можете использовать свойство ClientValidationFunction, чтобы сделать устройство проверки полностью участвовать в проверке клиента. Предположим, что вы предоставляете функцию ClientValidation. Но на самом деле, это только часть проверки. Проверка функции проверки клиента не превышает проверку выполнения на сервере, поскольку хакеры могут легко обойти функцию проверки.
Ниже приведен простой пример использования CustomValidator на клиенте и сервере, только проверьте, является ли вход ровным. Давайте представим функцию сервера (в C#):
{Partialive Service) {позиция
пытаться {
int i = int.fromString (значение);
Возврат ((i % 2) == 0);
} Ловить {
Вернуть ложь;
}
}
Ниже приведен метод объявления функции на клиенте, и функция проверки клиента, которая выполняет ту же проверку. Обычно это форма JScript, но если ваша цель - Microsoft & Reg;
<ASP: CustomValidator ID = CustomVal2 Runat = Server
Errormessage = числа не могут быть удалены!
ControlTovalidate = txtCustomData
OnServalidationFunction = ServerValidation
ClientValidationFunction = checkeven /> <br>
Поле данных: <ASP: TextBox ID = txtCustoSData Runat = Server />
<сценарий языка = javascript>
<!-
Функция checkeven (source, value) {{{
var value = parseint (значение, 10);
if (isnan (val))
Вернуть ложь;
Возврат ((val % 2) == 0);
}
//->
</script>
Вот некоторые меры предосторожности с использованием CustomValidator:
Подобно всем другим элементам управления проверкой (за исключением обязательного FieldValidator), если поле ввода пустое, считается, что CustomValidator эффективен.
Если используется более старый браузер или проверка клиента закрыта, функция проверки клиента не может быть вызвана. Перед определением функции вам не нужно проверять функцию браузера, используемого в браузере, но вы должны убедиться, что браузер не вызывает ошибки сценариев из -за определения. Обязательно сделайте ваш клиент -код как аннотацию HTML, как показано в следующем примере.
Два параметра передаются в вашу клиентскую функцию и соответствуют параметрам, передаваемым функции сервера. Первым является элемент устройства проверки клиента, а второе - это управляющее значение, указанное Controltovalidate. Однако на клиенте вы можете не определять параметры для функции, которая будет работать нормально.
Если вы используете Beta1 или более высокие версии, вы можете сохранить Controltovalide как пустую. В этом режиме функция сервера всегда будет запускать круглую поездку об обратном пути, и функция клиента всегда будет запускаться каждый раз, когда вы пытаетесь его отправлять. Вы можете использовать эту функцию, чтобы проверить элементы управления, которые не могут проверить другие методы, такие как Checkboxlist или отдельные радиопроизводительные кнопки. Если условие основано на нескольких элементах управления, и вы не хотите, чтобы пользователь оценивал условие при переключении между каждым полем на странице, вы можете использовать этот метод.
Другой вариант в бета -1 или выше - это событие изменения нескольких элементов управления. Метод состоит в том, чтобы добавить несколько встроенных сценариев, которые вызывают валидатор функции клиента, как описано выше.
Какие элементы управления могут быть проверены?
Чтобы разрешить контроль, контроль контроля, элемент управления должен иметь проверенные атрибуты. Все проверенные элементы управления имеют свойства ValidationPropertyAitTribute, которые указывают атрибут, который следует прочитать во время проверки. Если вы пишете свой собственный контроль, вы можете указать атрибуты, которые будут использоваться, предоставляя один из них, чтобы контроль участвовал в проверке.
Чтобы позволить проверке, обычно проводившейся на клиенте, атрибут должен соответствовать характеристикам значения элемента HTML, отображаемого клиентом. Многие сложные элементы управления (например, DataGrid и Calendar) не стоят клиента и могут быть проверены только на сервере. Следовательно, только элементы управления, наиболее близкие к HTML -элементам, могут участвовать в проверке. Кроме того, элемент управления должен иметь единое логическое значение для клиента. Следовательно, RadioButtonlist может быть проверен, но Faceboxlist не может.
Конец
Вышеупомянутое объяснение проверки ASP+ могло превысить контент, который вы хотите понять. Наслаждайся этим!
-------------------------------------------------- ------------------------------------------------------ ------------------------
Пожалуйста, используйте IE4.0 выше версии 800 * 600 просмотров на этом сайте
& Copy; Продолжать право собственности. Используйте правила.
Соберите самый практичный код специального эффекта веб -страницы!