Воскресенье, 2024-05-19, 2:23 PM
Статьи - ASP
Приветствую Вас Гость | RSS
Главная страница Каталог статей Регистрация Вход
Меню сайта

Категории каталога
ASP [32]
Статьи по ASP

Наш опрос
Какой раздел нужно пополнить (создать) ?
Всего ответов: 100

Начало » Статьи » ASP » ASP

Проверка данных на ASP.Net странице.
При разработке ASP.net приложений частовозникает необходимость в контроле за данными,вводимыми пользователем. Для этого применяютобъекты, предоставляемые .Net FrameWork: RequiredFieldValidator,ReqularExpresionValidator.

В общем случае схема примененияконтроля данных примерно следующая:

размещают элемент управления, позволяющий осуществить выбор данных
размещают элемент типа RequiredFieldValidator, контролирующий факт ввода данных в элемент управления; при необходимости с редактируемым элементом управления связывают элемент типа ReqularExpressionValidator
размещают на форме кнопку, которая манипулирует с данными, введенными в редактируемый элемент управления.
Но при дальнейшем усложнении страницыпри использовании обычной схемы примененияпроверки данных возникают сложности.

Если на форме есть несколькоредактируемых элементов управления, напримерTextBox1, TextBox2, TextBox3, TextBox4, логика задачи такая, чтотребует, чтобы данные переменных TextBox1, TextBox2обрабатывались кнопкой Button1, а данные полей TextBox3,TextBox4 обрабатывались кнопкой Button2.

Тогда обычная схема применения контроляданных выглядит следующим образом1.

разместить необходимые объекты RequiredFieldValidator1, RequiredFieldValidator2, RequiredFieldValidator3, RequiredFieldValidator4
связать их с соответствующими объектами TextBox.
И тогда при нажатии на кнопку Button1 будутсрабатывать объекты RequiredFieldValidator1, RequiredFieldValidator2,RequiredFieldValidator3, RequiredFieldValidator4, что вполнеестественно, так как все валидаторы связаны сэлементами управления, находящимися на странице.

Постановка задачи же требует, чтобы принажатии на кнопку Button1 срабатывали объектыRequiredFieldValidator1, RequiredFieldValidator2, обрабатывающие ввод вэлементы управления TextBox1, TextBox2, а при нажатии накнопку Button2 срабатывали объекты RequiredFieldValidator3,RequiredFieldValidator4, обрабатывающие ввод в элементыуправления TextBox3, TextBox4.

Для решения поставленной задачи нампомогут следующие свойства базового классаBaseValidator

EnableClientScript Устанавливает \ получает значение, указывающее на возможность контроля данных на стороне клиента
Display Устанавливает \ получает значение, устанавливающее поведение на дисплее сообщения об ошибке контролирующего элемента

Общий принцип отображения таков:

устанавливаем свойство EnableClientScript в false – благодаря этому мы сможем контролировать поведение элемента на сервере
устанавливаем свойство Display в ValidatorDisplay.None – благодаря этому мы сможем регулировать момент отображения сообщением об ошибке.
Очевидно, что для операцию сложениянужно проверять поля ввода, предназначенные длясложения, для вычитания нужно проверять поляввода, предназначенные для вычитания и т.д.

Далее рассматриваться функция,реализующая операцию вычитания.

Для ввода аргументов на форме должныбыть размещены для объекта типа TextBox: txtAddP1, txtAddP2;для проверки факта ввода на форме должны бытьразмещены два объекта типа RequiredFieldValidator: rfvAddP1,rfvAddP1; для проверки правильности введенных данныхна форме должны быть размещены два объекта типаReqularExpressionValidator: revAddP1, revAddP2.

Далее приводиться функция,осуществляющая проверку введенных значений ивычисляющая сумму этих значений, если введенныеданные верны.

Private Sub btnPlus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPlus.Click Page.Validate() Dim continue As Boolean = True If Not rfvAddP1.IsValid Then rfvAddP1.Display = ValidatorDisplay.Dynamic continue = False End If If Not rfvAddP2.IsValid Then rfvAddP2.Display = ValidatorDisplay.Dynamic continue = False End If If Not revAddP1.IsValid Then revAddP1.Display = ValidatorDisplay.Dynamic continue = False End If If Not revAddP2.IsValid Then revAddP2.Display = ValidatorDisplay.Dynamic continue = False End If If Not continue Then Exit Sub End If Dim d1, d2 As Double d1 = Convert.ToDouble(txtAddP1.Text, New System.Globalization.CultureInfo("en-us")) d2 = Convert.ToDouble(txtAddP2.Text, New System.Globalization.CultureInfo("en-us")) txtAddRes.Text = (d1 + d2).ToString("0.##", New System.Globalization.CultureInfo("en-us"))End Sub
Разбор приведенного примера.
Фукция Validate() объекта Page вызывается длятого, чтобы все валидаторы, размещенные настранице, выполнили требуемую от них проверку.

Далее благодаря тому, что мы отключилисвойство EnableClientScript (EnableClientScript=false), мы можемпроверять свойство IsValid каждого объекта,унаследованного от класса BaseValidator, котороепоказывает, прошла ли проверка, выполняемаявалидатором. То есть оператор

If Not rfvAddP1.IsValid Then rfvAddP1.Display = ValidatorDisplay.Dynamic continue = FalseEnd If
выполниться тогда, когда пользователь
не введет данных в поле txtAddP1. После этого нужно
установить свойство Display , управляющее
отображение строки об ошибки объекта rfvAddP1, в ValidatorDisplay.Dynamic, установим
переменную continue в false, чтобы знать, что на одном из
валидаторов проверка не прошла.

Таким же путем обрабатывается проверка
объекта revAddP1, проверяющего факт того, что
введенный текст является числом, в котором
десятичная точка представлена точкой.

Для того свойство ValidationExpression нужно
проинициализировать шаблоном для десятичного
числа (0|([1-9]+[0-9]*))(\.[0-9]*){0,1}.

Для операции деления вторым аргументом
должно быть любое десятичное число, отличное от 0.
Шаблон для регулярного выражения, требуемого
валидатором, будет следующим:
^(([1-9]+[0-9]*\.[0-9]*)|(0{0,1}\.[0-9]*[1-9]+[0-9]*)|([1-9]+[0-9]*))$ (за
него спасибо Олегу Аксенову)

Таким путем обрабатываются все
валидаторы, имеющие отношение к сложению.

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

Категория: ASP | Добавил: webmaster (2006-12-04)
Просмотров: 442 | Рейтинг: 0.0 |

Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа

Сервисы

Поиск по каталогу

Друзья сайта

| Ссылки 1 | Ссылки 2 | Ссылки 3 |
www.webmaster.clan.su Каталог+поисковая система be number one Bakililar.az Top Sites Сервис авто регистрации в
каталогах, статьи про раскрутку сайтов, web дизайн, flash, 
photoshop, хостинг, рассылки; форум, баннерная сеть, каталог 
сайтов, услуги продвижения и рекламы сайтов Скрипт для определения тиц (Яндекс CY: индекс цитирования). Определение pr (Google Pagerank). Проверить тиц pr сайта.
Copyright WebMaster.Clan © 2006 Бесплатный хостинг uCoz