Клиент 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® Internet Explorer, вы также можете использовать форму VBScript®.
<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+ могло превысить контент, который вы хотите понять. Наслаждайся этим!