مقدمه:
ارزيابي java قبل از به ثبت رساندن صفحه وب در وب سرور مي تواند گاهي بسيار کارآمد باشد.
براي استفاده از validations client side،javascript validation کفايت مي کند. هر چند در سناريو هاي پيچيده server side validation لازم است و client side javascript به تنهاي کفايت نخواهد کرد.
در يک چنين سناريوهاي عموماً post backها به منظور ارزيابي سرور اجرا مي شوند. در موارد زيادي، ممکن است برنامه نويس نخواهد که صفحات ارزيابي شوند، به اين دليل که ممکن است وضعيت صفحه (page state) از بين رود. اينجاست که Ajax خودش را نشان مي دهد. برنامه بوسيله قابليتهاي Ajax بدون اتکا به PostBackها ساخته مي شود تا بتواند از طريق JavaScript ارزيابي شود.
دورنما:
همانطور که قبلاٌ گفته شد، هدف اصلي از ارائه اين مقاله اين است که، نشان دهيم که چگونه اعتبار سنجي از طرف سرور حتي وقتي سناريوهاي پيچيده بوجود مي آيند، لحظه اي که از بوجود آمدن PostBack ها جلوگيري مي کنيم، امکان پذير است. دستورات کنترلي زير مي توانند به عنوان يک جزء مرکزي اعتبار سنجي مورد استفاده قرار گيرند که مي تواند براي تمام وب سايتهاي Asp.net مورد استفاده قرار گيرد.
مثالهاي از Ajax:
ssقبل از وارد شدن به بحث اين که چگونه اعتبار سنجي عمل مي کند، ما روش ساخت يک AjaxCall ساده را شرح خواهيم داد.
(براي اطلاعات بيشتر در مورد Ajax رجوع شود به تکنيکهاي Asp.net)
در مثالي که آورديم، ما از اجزاء Ajax.net استفاده خوهيم کرد. ما اين اجزاء را انتخاب کرديم به دليل اينکه پياده سازي آن راحت و انعطاف پذيري آن بسيار زياد است.
براي استفاده صحيح از Asp.net تنظيمات زير بايد به Web.config اضافه شوند.
براي توضيحات بيشتر در رابطه با اين تنظيمات مي توانيد به وب سايت Michael Schwartz مراجعه کنيد.


ساختن يک AjaxCall ساده :
يک صفحه وب ساده با يک html text box و يک دکمه بسازيد. توجه فرمائيد که رويداد Onclick دکمه ي مورد نظر تابع، makeAjaxCall() را صدا مي زند، که بعد از آن متد Ajaxsample.AjaxTest فراخواني خواهد شد.

کدهاي پشتي کلاس بايد با <AjaxPro.AjaxNamespace("AjaxSample")> انتخاب شوند. و براي اينکه متد وبِِ Ajax فراخواني شود بايد بوسيله <AjaxPro.AjaxMethod()> انتخاب شوند. همچنين رويداد PageLoad بايد namespace AjaxSample را با استفاده از :
AjaxPro.Utility.RegisterTypeForAjax(GetType(AjaxSample), Page).
به ثبت برساند.

ساختن کنترل اعتبار سنجي:
ما يک کنترل استفاده از وب مي سازيم(web User Control) تا بتوانيم از همان کنترل مجدداً روي تمام صفحات کاربردي وب استفاده کنيم. اعتبار سنجي که با اين کنترل پشتيباني مي شود در يک Enum ValidationType تعيين شده اند.

کلاسهاي کنترلي را بوسيله متد <AjaxPro.AjaxNamespace("AjaxValidator")> با متد <AjaxPro.AjaxMethod()> انتخاب کنيد و در آخر NameSpace را در رويداد PageLoad جايي که اعتبار سنج، اسم کلاس استفاده کننده کنترل است، بوسيله AjaxPro.Utility.RegisterTypeForAjax(GetType(Validator), Page) به ثبت برسانيد. اين تقريباً شبيه به همان چيزي است که اخيراً در مثال ذکر کرديم.
يک ساختار RegisteredControlsDs بسازيد و همچنين يک عضو خصوصي از ليست کلاسها که شامل ليست کنترلهاي وب از نوع RegisteredControlDs هستند جهت معتبر شدن ساخته شود.


کنترل ها براي اينکه معتبر باشند بايد به ليست _registeredControlsList اضافه شوند. بسته به نوع اعتبار سنجي که روي يک کنترل يا بين دو کنترل وجود دارد، يکي از دو متد زير قابل استفاده اند، تا بتواند کنترل را به ثبت برساند. براي مثال، اگر مقايسه بين دو کنترل است پس بايد از متد دوم استفاده کنيم، ولي اگر کنترل از نوع Single است و بايد اعتبار سنجي شود پس بايد از متد اول استفاده کرد.


زماني که کنترل با استفاده از دو متد فوق به ثبت رسيد، گام بعدي ساختن يک ValidateControls است تا بتوان کنترل ها را اعتبار بخشيد. بسته به اينکه آن يک اعتبار سنجي تک کنترله است يا بين دو کنترل، ValidateControlsها يکي از ساختارهاي داده اي ValidateControl را صدا زده (که سربارگذاري شده). اين متدها ساختارهاي داده اي ValidationResult را بر مي گردانند.




و در نهايت متد RegisterScript، JavaScript را به صورت پويا مبني بر کنترلِِِ به ثبت رسيده ازجانب سرور مي سازد.






با انجام تمام اين امور ساخت يک validation user control به اتمام رسيد.
پاراگراف زير نشان مي دهد که به چه شکل مي توان validation control را در صفحات کاربردي استفاده کرد، که خيلي آسان است.
همه را در کنار هم قرار دهيد :
استفاده از Validation user control در يک صفحه وب :
يک فرم وب AjaxValidationSample.aspx بسازيد و validation user control را در آن قرار دهيد. هر مقدار کنترل که براي اعتبار سنجي نياز است را درون آن قرار دهيد. در رويداد PageLoad فرم، متد RegisterValidationControls() را صدا زده. در RegisterValidationControls() (يا يک متد دلخواه) يک کنترل فعال بسازيد که بتواند اعتبار سنجي را فعال کند. بعد از آن، RegisterControl يا متد هاي RegisterControls را جهت به ثبت رساندن کنترل ها صدا زده.
و در آخر متد RegisterScript را جهت پردازش Ajax Javascript صدا زنيد.
کدهاي زير نشان دهنده محتواي AjaxValidationSample.aspx و کدهاي آن است.




در هنگام اجرا زماني که فرم بارگيري شد، javascript هم فراخواني و اعتبار سنجي ها اعمال مي شوند. در زير يک تصوير از صفحه وب زماني که دکمه تائيد فشار داده شده آمده است.

هدف :
validation control ارائه شده در بالا طراحي شده تا يک single validation control و validation بين دو کنترل را در باب دسته اي اداره کند.
نتيجه :
ما ديديم که چطور مي توان به validation user control ي که پايه آن بر Ajax توسعه پذير است، را بسازيم. اضافه کردن نوعهاي ديگر validation user control به اين کنترلها بسيار ساده است. تنها چيزي که نياز داريم اين است که يک enum تعيين و يک validation code فراهم سازيم تا validation control بقيه کار را انجام دهد.
معرفي سايت مرتبط با اين مقاله