بررسی كنترل های Validation در ASP.NET New Page 1



ساير




 

 

 

SAKHA RAVESH CO.

 ا مروز

 پنجشنبه  4  خرداد  1396  2017  May  25   Thursday ToDay
صفحه اصلی  مقالات نکته هادايره المعارف خودآموزها | تازه ها خود آزمون ها    
  نسخه قابل چاپ  

    5 4 3 2 1 

 عنوان

 نويسنده

  مشاهده

 تعداد آراء

 امتياز

 كنترل های Validation در ASP.NET ( بخش دوم )

 مديريت وب

12001

7

4.7

با توجه به جایگاه داده در عصر حاضر و  لزوم نگاه جامع به این مقوله مهم ، بر آن شدیم تا محوریت فعالیت های خود را بر  روی این موضوع متمرکز نمائیم . از این رو گروه فابک با شعار فناوری اطلاعات برای کسب وکار شکل گرفت و  خدمات خود  را از طریق  سایت www.fabak.ir  به مخاطبان محترم عرضه می نماید

 

كنترل های 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 خواهيم پرداخت .



جستجو

مقالات                 
دايره المعارف       
دوره های آموزشی


 

 

مشاهده گروه ها



              

 

 تهيه شده در شرکت سخا روش -  1382