Custom validator
از آن زماني مي شود استفاده كرد كه بخواهيم اعتبارسنجي خارج از كليه اعتبارسنجي هاي ديگرانجام دهيم اين كنترل قادر است اعتبارسنجي خود را در دو طرف سرور و يا كلاينت انجام دهد.
اعتبارسنجي طرف سرور
فرض كنيد مي خواهيم عددي را از كاربر دريافت كرده و بررسي كنيم بر 5 بخش پذير است يا نه، پس از اتصال اين كنترل به تكست باكس بر روي رويداد server validate دوبار كليك كرده كدي شبيه زير را وارد مي كنيم:
try
{
int x = Convert.ToInt32(args.Value);
args.IsValid = (x % 5 == 0);
}
catch (Exception)
{
args.IsValid = false;
}
در كد فوق از آرگومان يا پارامتري به نام Args استفاده كرديم اين پارامتر توسط خود رويداد در اختيار قرار مي گيرد و دو خاصيت مهم دارد:
الف) value: متن موجود در تكست باكس وابسته را برمي گرداند.
ب) IsValid: باعث نامعتبر و معتبر شدن page مي شود.
حال بايد در رويداد كليك دكمه اي كه اطلاعات را به سرور منتقل كرده در خط اول آن كد زير را وارد كنيم:
if (Page.IsValid == false) return;
بررسي طرف كلاينت
فرض كنيد مي خواهيم بررسي كنيم كه عدد وارد شده بر 5 بخش پذير است يا نه و اين كار را فقط طرف كلاينت انجام دهيم از اين رو دستورات زير را در صفحه aspx وارد مي كنيم:
<script type=”text/javascript”>
function myValidation(s, a) {
try {
var x = parseInt(a.value);
a.IsValid = (s % 5 == 0);
} catch (e) {
a.IsValid = false;
}
}
</script>
حال بايد نام تابع را كه در اينجا myValidation تعريف كرديم به خاصيت Client Validation Function نسبت دهيم.