کنترل های Validation در ASP.NET ( بخش دوم )
در بخش اول به ماهیت و جایگاه کنترل های validation اشاره و عملکرد دو کنترل <asp:RequiredFieldValidator> و <asp:RangeValidator> بررسی گردید . در این بخش به بررسی سایر کنترل های validation خواهیم پرداخت .
کنترل <asp:CompareValidator>
کنترل فوق مسئولیت بررسی مقدار درج شده در یک TextBox را برعهده دارد . بدین منظور داده ورودی با یک مقدار خاص و یا مقدار یک کنترل موجود بر روی فرم مقایسه می گردد . نوع داده درج شده در TextBox می تواند از نوع Currency ، Date ، اعشاری ، صحیح و یا رشته ( مقدار پیش فرض ) باشد .
شکل عمومی
شکل عمومی کنترل فوق به صورت زیر است :
<asp:CompareValidator id="id" Runat="Server" |
توضیحات
از یک 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"> |
کنترل <asp:CustomValidator>
در زمان بررسی و ارزیابی داده ورودی ممکن است به مواردی برخورد نمائیم که با ترکیب یک RequiredFieldValidator ، RangeValidator و یا CompareValidator خواسته ما تامین نگردد. در چنین مواردی می توان از کنترل <asp:CustomValidator> به منظور انجام تست های اضافه استفاده نمود .
شکل عمومی
شکل عمومی کنترل فوق به صورت زیر است :
<asp:CustomValidator id="id" Runat="Server" |
توضیحات
خصلت های کنترل <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"> |
در بخش سوم به بررسی سایر کنترل های Validation خواهیم پرداخت .