PDA

View Full Version : کنترل های Validation در ASP.NET ( بخش سوم )



amir.NET2
پنج شنبه 30 آذر 1385, 09:08 صبح
در این بخش به بررسی سایر کنترل های validation خواهیم پرداخت .
گروه های validation
در زمان پیاده سازی فرم های ورود اطلاعات به مواردی برخورد خواهیم کرد که لازم است از چندین TextBox به منظور دریافت داده ورودی جهت انجام پردازش های مورد نیاز در یک اسکریپت ، استفاده گردد .همچنین ، ممکن است در مواردی لازم باشد که از چندین button در یک فرم ورود اطلاعات استفاده گردد و متناسب با این که کدام button توسط کاربران فعال شده است ، بررسی و صحت داده ورودی تعداد خاصی از کنترل های موجود بر روی فرم ورود اطلاعات ( مستقل از سایر کنترل ها ) ، انجام شود . در چنین مواردی می بایست تمامی کنترل هائی را که می خواهیم پس از کلیک بر روی یک button خاص ، validate شوند را عضوء یک گروه نمود و نام آن گروه را برای button مورد نظر نیز مشخص نمود . بدین ترتیب ، پس از کلیک بر روی button مورد نظر صرفا" آندسته از کنترل هائی که عضوء گروه هم نام با گروه معرفی شده به همراه button می باشند ، بررسی و ارزیابی خواهند شد .
مثال
در فرم ورود اطلاعات زیر از چندین کنترل ( چهار کنترل TextBox ) استفاده شده است که تمامی آنها عضوء یک گروه validation می باشند . پس از کلیک بر روی دکمه "ارسال اطلاعات " ، صرفا" آندسته از کنترل هائی که کنترل های validation آنها عضوء گروه مشخص شده می باشند ، validate خواهند شد .

http://www.srco.ir/Articles/images/ValidationControl-02.jpg
فرم ورود اطلاعات : استفاده از چهار کنترل TextBox که تمامی آنها عضوء یک گروه Validation می باشند


<SCRIPT Runat="Server">

Sub Validate_Email (Src As Object, Args As ServerValidateEventArgs)

If InStr(Args.Value, "@") = 0 Then
EmailValidator.ErrorMessage = "لطفا یک آدرس پست الکترونیکی صحیح را وارد نمائید"
Args.IsValid = False
End If

End Sub

Sub Get_Data (Src As Object, Args As EventArgs)

If Page.IsValid Then
Output.Text = "You entered valid data"
End If

End Sub

</SCRIPT>

<form Runat="Server">

<h3>فرم ورو اطلاعات</h3>

<table border="0" cellpadding="2">
<tr>
<td>نام:</td>
<td><asp:TextBox id="FirstName" Runat="Server"/></td>
<td><asp:RequiredFieldValidator Runat="Server"
ControlToValidate="FirstName"
ValidationGroup="Group1"
ErrorMessage="لطفا نام خود را وارد نمائید"
Display="Dynamic"/></td>
</tr>
<tr>
<td>نام خانوادگی:</td>
<td><asp:TextBox id="LastName" Runat="Server"/></td>
<td><asp:RequiredFieldValidator Runat="Server"
ControlToValidate="LastName"
ValidationGroup="Group1"
ErrorMessage="لطفا نام خانوادگی خود را وارد نمائید"
Display="Dynamic"/></td>
</tr>
<tr>
<td>سن:</td>
<td><asp:TextBox id="Age" Width="50" Runat="Server"/></td>
<td><asp:RangeValidator Runat="Server"
ControlToValidate="Age"
ValidationGroup="Group1"
Type="Integer"
MinimumValue="15"
MaximumValue="99"
ErrorMessage="لطفا" یک عدد بین پانزده تا نود و نه را وارد نمائید "
Display="Dynamic"/>
<asp:RequiredFieldValidator Runat="Server"
ControlToValidate="Age"
ValidationGroup="Group1"
ErrorMessage="لطفا سن خود را وارد نمائید "
Display="Dynamic"/></td>
</tr>
<tr>
<td>آدرس پست الکترونیکی:</td>
<td><asp:TextBox id="Email" Runat="Server"/></td>
<td><asp:CustomValidator id="EmailValidator" Runat="Server"
ControlToValidate="Email"
ValidationGroup="Group1"
Display="Dynamic"
OnServerValidate="Validate_Email"/>
<asp:RequiredFieldValidator Runat="Server"
ControlToValidate="Email"
ValidationGroup="Group1"
ErrorMessage="لطفا آدرس پست الکترونیکی خود را وارد نمائید"
Display="Dynamic"/></td>
</tr>
</table>
<br/>
<asp:Button Text="ارسال اطلاعات" ValidationGroup="Group1"
OnClick="Get_Data" Runat="Server"/>
<asp:Label id="Output" Runat="Server"/><br/>

</form>

به دکمه "ارسال اطلاعات " ، یک نام گروه validation نسبت داده شده است تا پس از کلیک بر روی آن ، کنترل هائی که کنترل های validation آنها عضوء گروهی با همین نام می باشند ، بررسی و ارزیابی گردند . در صورتی که از کنترل های validation دیگر بر روی فرم استفاده شده است که عضوء گروه validation نمی باشند ، پس از کلیک بر روی دکمه "ارسال اطلاعات " ، ارزیابی نخواهند شد .
پس از کلیک بر روی هر button موجود بر روی یک فرم ، صرفا" آندسته از کنترل هائی بررسی و ارزیابی خواهند شد که تشکیل یک گروه را می دهند و از یک نام مشابه برای گروه استفاده می نمایند که همانند نام نسبت داده شده به button مورد نظر است .
کنترل <asp:ValidationSummary>با استفاده از کنترل <asp:ValidationSummary> ، پیام های خطاء جداگانه توسط یک کنترل تولید و با یکدیگر نمایش داده می شوند. کنترل فوق ، همچنین قادر به تولید گزارش پیام های خطاء محدود به مجموعه ای خاص از کنترل ها می باشد .
شکل عمومی
شکل عمومی کنترل فوق به صورت زیر است :

<asp:ValidationSummary id="id" Runat="Server"
DisplayMode="BulletList|List|SingleParagraph"
HeaderText="string"
ShowMessageBox="False|True"
ShowSummary="False|True"
ValidationGroup="name"
/>

توضیحات
<LI dir=rtl>خصلت DisplayMode ، نحوه ( فرمت ) نمایش پیام های خطاء را مشخص می نماید که به صورت پیش فرض یک لیست bulleted در نظر گرفته می شود .
<LI dir=rtl>مکان نمایش گزارش پیام های خطاء در محلی است که کنترل ValidatiomSummary استفاده شده است .
<LI dir=rtl>با استفاده از خصلت ShowMessageBox و نسبت دادن مقدار True به آن ، یک پیام pop-up نمایش داده خواهد شد . بدین ترتیب ، خروجی کنترل ValidationSummary در یک PoP-Up نمایش داده می شود .
در صورتی که خلاصه گزارش خطاء مرتبط با یک گروه validation خاص می باشد ، می بایست نام آن گروه به خصلت ValidationGroup نسبت داده شود .
مثال
مثال زیر ، بازنویسی مثال قبل است . با این تفاوت که در مقابل نمایش جداگانه پیام های خطاء ، از یک کنترل ValidationSummary استفاده شده است .

http://www.srco.ir/Articles/images/ValidationControl-03.jpg
استفاده از کنترل ValidationSummary

<SCRIPT Runat="Server">

Sub Validate_Email (Src As Object, Args As ServerValidateEventArgs)

If InStr(Args.Value, "@") = 0 Then
EmailValidator.ErrorMessage = "لطفا یک آدرس پست الکترونیکی صحیح را وارد نمائید"
Args.IsValid = False
End If

End Sub

Sub Get_Data (Src As Object, Args As EventArgs)

If Page.IsValid Then
Output.Text = "You entered valid data"
End If

End Sub

</SCRIPT>

<form Runat="Server">

<h3>فرم ورو اطلاعات</h3>

<table border="0" cellpadding="2">
<tr>
<td>نام:</td>
<td><asp:TextBox id="FirstName" Runat="Server"/></td>
<td><asp:RequiredFieldValidator Runat="Server"
ControlToValidate="FirstName"
ValidationGroup="Group1"
ErrorMessage=" نام "
Display="None"/></td>
</tr>
<tr>
<td>نام خانوادگی:</td>
<td><asp:TextBox id="LastName" Runat="Server"/></td>
<td><asp:RequiredFieldValidator Runat="Server"
ControlToValidate="LastName"
ValidationGroup="Group1"
ErrorMessage=" نام خانوادگی "
Display="None"/></td>
</tr>
<tr>
<td>سن:</td>
<td><asp:TextBox id="Age" Width="50" Runat="Server"/></td>
<td><asp:RangeValidator Runat="Server"
ControlToValidate="Age"
ValidationGroup="Group1"
Type="Integer"
MinimumValue="15"
MaximumValue="99"
ErrorMessage="یک عدد بین پانزده تا نود و نه "
Display="None"/>
<asp:RequiredFieldValidator Runat="Server"
ControlToValidate="Age"
ValidationGroup="Group1"
ErrorMessage=" سن "
Display="None"/></td>
</tr>
<tr>
<td>آدرس پست الکترونیکی:</td>
<td><asp:TextBox id="Email" Runat="Server"/></td>
<td><asp:CustomValidator id="EmailValidator" Runat="Server"
ControlToValidate="Email"
ValidationGroup="Group1"
Display="None"/>
OnServerValidate="Validate_Email"/>
<asp:RequiredFieldValidator Runat="Server"
ControlToValidate="Email"
ValidationGroup="Group1"
ErrorMessage=" آدرس پست الکترونیکی "
Display="None"/></td>
</tr>
</table>
<br/>
<asp:Button Text="Submit" ValidationGroup="Group1"
OnClick="Get_Data" Runat="Server"/>
<asp:Label id="Output" Runat="Server"/><br/>

<asp:ValidationSummary Runat="Server"
ValidationGroup="Group1"
DisplayMode="BulletList"
HeaderText=" لطفا اطلاعات زیر را وارد نمائید "
ShowSummary="True"
ShowMessageBox="False"/>

</form>