|
عنوان
|
نويسنده
|
مشاهده
|
تعداد
آراء |
امتياز
|
|
كنترل های Validation در ASP.NET ( بخش دوم ) |
مديريت وب |
5812 |
3 |
4.7 |
كنترل های Validation در ASP.NET
كنترل های Validation در ASP.NET
( بخش دوم )
در
بخش اول
به ماهيت و جايگاه كنترل های validation اشاره و عملكرد
دو كنترل <asp:RequiredFieldValidator>
و <asp:RangeValidator> بررسی گرديد .
در اين بخش به بررسی ساير كنترل های validation خواهيم
پرداخت .
كنترل
<asp:CompareValidator>
كنترل فوق مسئوليت بررسی مقدار درج شده در يك TextBox
را برعهده دارد . بدين منظور داده ورودی با يك مقدار خاص و يا مقدار يك كنترل موجود
بر روی فرم مقايسه می گردد . نوع داده درج شده در TextBox
می تواند از نوع Currency ، Date
، اعشاری ، صحيح و يا رشته ( مقدار پيش فرض ) باشد .
شكل عمومی
شكل عمومی كنترل فوق به صورت زير است :
|
<asp:CompareValidator id="id"
Runat="Server"
ControlToCompare="controlID"
ControlToValidate="controlID"
Display="Dynamic|None|Static"
ErrorMessage="string"
Operator="Equal|NotEqual|GreaterThan|GreaterThanEqual|LessThan
|LessThanEqual|DataTypeCheck"
SetFocusOnError="False|True"
Type="Currency|Date|Double|Integer|String"
ValidationGroup="name"
ValueToCompare="value"
/>
|
توضيحات
-
از يك id صرفا" زمانی
استفاده می شود كه قرار است به كنترل از طريق اسكريپپ مراجعه
گردد .
-
به خصلت ControlToValidate ، مقدار
id كنترل textBox
كه مسئوليت بررسی آن به كنترل
<asp:CompareValidator> واگذار شده است ،نسبت داده
می شود.
-
خصلت ErrorMessage ،
پيام مورد نظر در صورت بروز خطاء را مشخص می نمايد .
-
خصلت SetFocusOnErrorMessage ، يك
blinking cursor را در كنترل TextBox مربوطه به
منظور تسهيل در
امر درج داده جديد قرار می دهد .
-
خصلت ValidationGroup يك
گروه از كنترل های TextBox را كه مجموعه ای از تست های
بررسی روی آنها اعمال خواهد شد
، مشخص می نمايد (در مواردی كه دكمه های متفاوت می توانند باعث فعال شدن تست های
مختلفی گردند ) .
-
خصلت Display : كنترل
<asp:CompareValidator> ، يك فضای افقی را متناسب با طول رشته مربوط به پيام خطاء
اشغال خواهد كرد . در اغلب موارد ، پيام خطاء در كنار
TextBox مربوطه نمايش داده می شود . مكان فوق بر
روی صفحه همواره نشان داده خواهد شد ( ولو اين كه خطائی اتفاق نيافتد ) . در صورتی
كه مقدار خصلت Display معادل Dynamic
در نظر گرفته شود ، مكانی برای
نمايش پيام خطاء رزو نخواهد شد و
بطور پويا و همزمان با بروز خطاء ايجاد می گردد .
-
مقدار ورودی می تواند
با يك مقدار مشخص شده توسط خصلت
ValueToCompare و يا مقدار يك كنترل ديگر موجود در صفحه (
مشخص شده توسط خصلت ControlToCompare )
، مقايسه گردد . به صورت
پيش فرض ، عمليات مقايسه برای "برابری " انجام خواهد شد . در صورت نياز می توان از
ساير عملگرهای مقايسه ای كه توسط خصلت Operator
مشخص می گردند ، استفاده نمود . عمليات مقايسه بر اساس نوع داده درج شده در
Textbox كه توسط خصلت Type
مشخص می گردد ، انجام خواهد شد .
-
خصلت Type : در صورتی كه
نوع داده ورودی مشخص نگردد ، نوع آن به صورت پيش فرض string
در نظر گرفته خواهد شد . يك TextBox خالی ، به
عنوان يك نوع داده معتبر ارزيابی خواهد شد . بنابراين ، لازم است كه به همراه كنترل
<asp:CompareValidator> از يك كنترل RequiredFieldValidator نيز استفاده گردد تا اين
اطمينان حاصل شود كه
با عدم درج داده در
TextBox مربوطه با آْن به عنوان يك داده معتبر برخورد
نخواهد شد .
مثال
در اين مثال ، كاربر می بايست يك عدد مثبت را
وارد نمايد و در صورتی كه مقدار ورودی منفی باشد يك پيام خطاء نمايش داده می شود .
به همراه كنترل CompareValidator از يك كنترل RequiredFieldValidator نيز استفاده
شده است تا عدم درج داده ( خالیبودن ) به عنوان يك داده معتبر ارزيابی نگردد .
مقدار ورودی می بايست از نوع اعشاری (Type=Double ) و بزرگتر از
(Operator=GreaterThan ) صفر (ValueToCompare=0 ) باشد تا به
عنوان يك داده معتبر ارزيابی گردد .
|
<SCRIPT Runat="Server">
Sub Get_Data (Src As Object, Args As EventArgs)
Output.Text = "You entered '" & MyTextBox.Text & "'"
End Sub
</SCRIPT>
<form Runat="Server">
Enter a positive number:<br/>
<asp:TextBox id="MyTextBox" Runat="Server"/>
<asp:Button Text="Submit" OnClick="Get_Data" Runat="Server"/>
<asp:CompareValidator Runat="Server"
ControlToValidate="MyTextBox"
ValueToCompare="0"
Type="Double"
Operator="GreaterThan"
ErrorMessage="Please enter a number greater than 0"
Display="Dynamic"
SetFocusOnError="True"/>
<asp:RequiredFieldValidator Runat="Server"
ControlToValidate="MyTextBox"
ErrorMessage="Please enter a data value"
Display="Dynamic"
SetFocusOnError="True"/>
<asp:Label id="Output" Runat="Server"/>
</form>
|
كنترل
<asp:CustomValidator>
در زمان بررسی و ارزيابی داده ورودی ممكن
است به مواردی برخورد نمائيم كه با تركيب يك RequiredFieldValidator ،
RangeValidator و يا CompareValidator خواسته ما تامين نگردد. در چنين مواردی
می توان از كنترل <asp:CustomValidator> به منظور انجام تست های اضافه استفاده نمود
.
شكل عمومی
شكل عمومی كنترل فوق به صورت زير است :
|
<asp:CustomValidator id="id" Runat="Server"
ControlToValidate="controlID"
Display="Dynamic|None|Static"
ErrorMessage="string"
SetFocusOnError="False|True"
ValidationGroup="name"
OnServerValidate="subprogram"
/>
|
توضيحات
-
خصلت های كنترل
<asp:CustomValidator> مشابه ساير كنترل های
validation می باشند با اين تفاوت كه از خصلت
OnServerValidate به منظور فراخوانی يك برنامه فرعی برای
بررسی و ارزيابی داده ورودی
نيز استفاده می گردد .
-
يك TextBox
خالی به عنوان يك داده معتبر در نظر گرفته خواهد شد . بنابراين می بايست به همراه
كنترل CustomValidator از يك كنترل RequiredFieldValidator نيز استفاده گردد
تا عدم درج داده به عنوان يك داده معتبر ارزيابی نگردد .
-
برنامه فرعی صدا زده شده دارای آرگومان های خاص
ServerValidateArgs می باشد .
در صورتی كه بررسی و ارزيابی صحت داده ورودی توام با موفقيت نباشد ، مقدار خصلت
IsValid معادل false خواهد شد
. از آرگومان Value ، به عنوان مرجعی به منظور مراجعه به مقدار
TextBox ( كنترل مشخص شده
توسط خصلت
ControlToValidate ) استفاده می گردد .
-
خصلت ErrorMessage ،
پيام مورد نظر در صورت بروز خطاء را مشخص می نمايد .
-
خصلت SetFocusOnErrorMessage ، يك
blinking cursor را در كنترل TextBox مربوطه به
منظور تسهيل در
امر درج داده جديد قرار می دهد .
-
خصلت ValidationGroup يك
گروه از كنترل های TextBox را كه مجموعه ای از تست های
بررسی روی آنها اعمال خواهد شد
، مشخص می نمايد (در مواردی كه دكمه های متفاوت می توانند باعث فعال شدن تست های
مختلفی گردند ) .
-
خصلت Display : كنترل
<asp:CustomValidator> ، يك فضای افقی را متناسب با طول رشته مربوط به پيام خطاء
اشغال خواهد كرد . در اغلب موارد ، پيام خطاء در كنار
TextBox مربوطه نمايش داده می شود . مكان فوق بر
روی صفحه همواره نشان داده خواهد شد ( ولو اين كه خطائی اتفاق نيافتد ) . در صورتی
كه مقدار خصلت Display معادل Dynamic
در نظر گرفته شود ، مكانی برای
نمايش پيام خطاء رزو نخواهد شد و
بطور پويا و همزمان با بروز خطاء ايجاد می گردد .
مثال
در اين مثال به منظور ارزيابی و تست داده ورودی در يك
TextBox از دو كنترل
CustomValidator و
RequiredFieldValidator استفاده شده است
. داده ورودی می بايست يك عدد صحيح بين صفر تا نود و نه باشد .
پس از كليك بر روی دكمه Submit ، روتين
Get_Data فعال و قبل از
هر چيز عمليات بررسی و ارزيابی
صحت داده ورودی انجام خواهد شد . كنترل RequiredFieldValidator در ابتدا بررسی لازم
در خصوص درج داده در TextBox را انجام و در
ادامه روتين Validate_TextBox توسط خصلت
OnServerValidate كنترل CustomValidator فراخوانده می
شود . روتين فوق ، تست های لازم را بر روی داده ورودی انجام خواهد داد (
برای مراجعه به داده ورودی از Args.Value
استفاده شده است ) . در صورتی كه هر يك از تست های انجام شده توام با موفقيت نباشد
، خصلت Args.Isvalid مقدار
false را خواهد گرفت ( داده ورودی می بايست يك عدد مثبت بين صفر تا نود و نه
باشد ) .
پس از انجام فرآيند بررسی داده ورودی ، روتين Get_Data ،
اجرا خواهد شد . روتين فوق
در ابتدا و پس از كليك بر روی
دكمه button فراخوانده
می گردد و اجرای آن تا زمانی كه عمليات بررسی و ارزيابی داده ورودی به اتمام نرسيده
باشد ، به تاخير خواهد افتاد . پردازش های انجام شده در روتين Get_Data
مشروط به انجام موفقيت آميز تست ارزيابی و صحت داده است . بنابراين ، همه چيز
وابسته به شرط Page.IsValid شده است و در صورتی كه
Args.IsValid معادل false شده
باشد ، مقدار Page.IsValid نيز
false خواهد شد.
|
<SCRIPT Runat="Server">
Sub Validate_TextBox (Src As Object, Args As ServerValidateEventArgs)
If Not IsNumeric(Args.Value) Then
MyValidator.ErrorMessage = "Please enter a
number"
Args.IsValid = False
Else
If Not Args.Value Mod 1 = 0 Then
MyValidator.ErrorMessage = "Please enter an integer"
Args.IsValid = False
End If
If Args.Value < 0 Then
MyValidator.ErrorMessage = "Please enter a positive integer"
Args.IsValid = False
End If
If Args.Value > 99 Then
MyValidator.ErrorMessage = "Please enter a positive integer between
0 and 99"
Args.IsValid = False
End If
End If
End Sub
Sub
Get_Data (Src As Object, Args As EventArgs)
If Page.IsValid Then
Output.Text = "You entered '" & MyTextBox.Text & "'"
End If
End Sub
</SCRIPT>
<form Runat="Server">
Enter a positive integer:<br/>
<asp:TextBox id="MyTextBox" Runat="Server"/>
<asp:Button Text="Submit" OnClick="Get_Data" Runat="Server"/>
<asp:CustomValidator id="MyValidator" Runat="Server"
ControlToValidate="MyTextBox"
Display="Dynamic"
SetFocusOnError="True"
OnServerValidate="Validate_TextBox"/>
<asp:RequiredFieldValidator Runat="Server"
ControlToValidate="MyTextBox"
ErrorMessage="Please enter a data value"
Display="Dynamic"
SetFocusOnError="True"/>
<asp:Label id="Output" Runat="Server"/>
</form>
|
در بخش سوم به بررسی ساير كنترل های
Validation خواهيم پرداخت .