Custom Validation (Özel Onaylama)

Eyl 06, 2013

Onaylama kontrolünün amacı Web uygulamalarında kullanıcının girmiş olduğu verilerin veri tabanına kaydedilmeden önce istenilen şartların sağlanıp sağlanmadığını kontrol etmektir. Bu şartlar veri girilen alanın boş bırakılmaması, verinin istenilen biçimde olması, verinin herhangi bir değerden büyük veye küçük olmaması vs. olabilir. Bu tür sorunların önüne geçebilmek için satırlarca kod yazmak yerine ASP uygulamaları ile, bir textbox etkileşim sayfasına boş geliyor ise kullanıcı geri aynı sayfaya yönlendirilir veya bir uyarı yazısı gösterilir. Bunu yapmanın başka bir yolu Validation (Onaylama) Kontrolleri'ni kullanmaktır. Onaylama Kontrolleri, form nesneleri üzerinde işlemi tamamladığımızda kendini aktifleştiren bir yapıya sahiptir. Onaylama kontrolleri programlama aşamasında programcılara büyük kolaylık ve hız kazandırır. Ayrıca bu kontrollerin, uygulamanın çalışması sırasında, işlemleri client-side (istemci tarafında) yapması da pek çok kolaylık sağlar.

Onaylama Kontrolleri'nden biri olan CustomValidator (Özel Onaylayıcı), standart onaylama kontrollerinin yetersiz kaldığı, farklı algoritmalar içeren durumlarda veya birden fazla onaylama kontrolünün tek bir kontrol üzerinde birleşmesi istenen durumlarda kullanılır. Örneğin; bir metin kutusuna girilen değerin uzunluğunun istenilen uzunlukta olup olmadığının kontrolünü sağlayabiliriz. CustomValidator kontrolünün bazı özellikleri aşağıdaki gibidir:

ControlToValidate: Hangi alanın kontrol edildiğini belirler.
ErrorMessage(Hata Mesajı): Kullanıcıya gösterilen hata mesajıdır. 
OnServerValidate: Şartın sağlanıp sağlanmadığını kontrol eder.

Örnek kullanım aşağıdaki uygulamada gösterilmiştir.

Uygulama:

Bir Web sayfasına kayıt için, TC Kimlik Numarası bilgisinin girilmesi gereken bir uygulama yapılmıştır. TC Kimlik Numarası için bu alanın 11 karakterli olması şartı aranmalıdır. Bu alan için CustomValidator kontrolü kullanılır ve girilen TC Kimlik Numarası'nın 11 karakterli olup olmadığının kontrolünü yapar.

<asp:CustomValidator ID="tckimliknumarasi" ControlToValidate="tbTCKimlikNumarasi" ErrorMessage="11 karakter giriniz." runat="server" display="Static" OnServerValidate="ServerValidation"></asp:CustomValidator>

protected void ServerValidation(object source, ServerValidateEventArgs args)
    {
        try
        {
           int i = args.Value.Length;
           args.IsValid = i == 11;
        }
        catch (Exception ex)
        {
           args.IsValid = false;
        }
    }

Web sayfasının görüntüsü şu şekilde olur:



TC Kimlik Numarası eksik girildiğinde sayfa görüntüsü şu şekilde olur: