Bir web projesinde, kullanıcıdan alınan bilgilerin eksik veya geçersiz formatta olma durumu söz konusu olabilir. Genellikle iletişim ve kayıt formlarında karşılaştığımız bu durumun kontrolünü C# tarafından kontrol edebiliriz.Buda gerekli butona tıklandığı vakit, gerekli gereksiz bütün nesnelerin server kısmına gidip, orada C# tarafından kontrol edilip geri gönderilmesine sebep olacaktır.Bu yöntem büyük ölçüde performans kaybına sebep olacaktır.Biz bu kontrolleri client kısmındada javascript ile gerçekleştirebiliriz.Validation kontrolleri client kısmında bu kontrolleri yapmamızı sağlarlar.Arka planda JavaScript kodlarıyla çalışırlar.
Bir sayfa içindeki kontrollerin içeriğinin boş olup olmadığının denetlenmesi server tarafından yapılabilir.Ama yapılmamalıdır.Çünkü client, bu kontrollerin içeriğini denetleyebilir.Bu denetim sonucu, başarılı ise sayfa servera gönderilmeli ve sonraki işlemler yaptırılmalıdır.
Client tarafından yapılacak olan işlemler JavaScript ile yaptırılır.
İlk olarak RequiredFieldValidator nesnesinin ne işe yaradığını ve nasıl kullanıldığını bir sonraki sayfada inceleyelim.
RequiredFieldValidator
Bu kontrol, kullanıcıdan bilgi alınırken gerekli alanların boş olup olmadığını kontrol eder.
Özellikleri
Text :Olası bir boş bilgi durumunda çalıştırılan RequiredFieldValidator nesnesinin,kullanıcıya gösterilecek durum yazısı.Örnek olarak, “Adınızı Giriniz.”
ControlToValidate :RequiredFieldValidator nesnemizin kontrol edeceği nesneyi bu özellik sayesinde belirtiyoruz.Örnek olarak, “txtAdi”
ValidationGroup :Birden fazla Button nesnesinin bulunduğu bir sayfada, RequiredFieldValidator nesnelerimizi bütün butonlar tetikleyeceklerdir.Ben B1 butonuna tıklandığı zaman RequiredFieldValidator nesnemizin, kendisine bağlanan nesneyi kontrol etmesini isteyebilirim.Ancak B2 butonuna bastığım zamanda bu kontrol gerçekleşecektir.Yani bir gruplama yapılmadığından, sayfa her servera gönderilmek istendiğinde RequiredFieldValidator nesnemiz devreye girecektir.
İşte böyle bir durumda istediğimiz butonda devreye girmesini istiyorsak bu özelliği kullanırız.Sayfada kullandığımız bütün RequiredFieldValidator nesneleri ValidationGroup özelliğiyle bir gruba bağlanır.Ve bu grubu çalıştırmasını istediğimiz Buttonumuzun ValidationGroup özelliğinide aynı grupba bağlarsak, artık o saatten sonra o RequiredFieldValidator nesnelerimiz o Button’a tıklandığında işleyeceklerdir.
ErrorMessage :Normalde Text özelliği doluyken olası durumda kullanıcıya gösterilecek yazı Text özelliğindeki yazı olacaktır(Text ve ErrorMessage özellikleri aynı anda dolu olsa bile öncelik Text özelliğinindir.)Eğer Text özelliği boş,ErrorMessage özelliği dolu ise kullanıcıya ErrorMessage deki yazı gösterilecektir.Ama asıl amacı bunların dışındadır.
Yazının ilerisinde göreceğimiz ValidationSummary nesnesinden şimdilik ufak değinmek istiyorum.Bazı sitelerde kontrol edilen nesnelerde olası bir durum olduğu zaman, nesnelerin yanında * işareti gözüküp, sayfanın belirli bir kısmındada o alanlarla ilgili mesajlar gözükmektedir.Mesela Ad ve Soyad kısımları doldurulmayıp, sadece Sifre kısmı doldurulduğu zaman, Ad ve Soyad kısımlarının yanında * çıkacak,Sifre de çıkmayacaktır.Ve belirlenen bir bölümde,topluca Ad ve Soyad bölümlerinin girilmesiyle ilgili mesajlar verilecektir.
İşte bu şekilde bir çalışmayı ValidationSummary kontrolü ile yapmak mevcuttur.
RequiredFieldValidator nesnemizin Text kısmındaki mesaj(genellikle ValidationSummary kullanılırken * konulur) RequiredFieldValidator nesnemizde gözükecek,ErrorMassage kısmındaki mesajda ValidationSummary nesnesinde gözükecektir.
Şimdi ise CompareValidator kontrolünü diğer sayfada inceleyeceğiz.
CompareValidator
Bir kontrol ile başka bir kontrol içeriğini karşılaştırır.Aynı zamanda bir kontrol içeriği ile herhangi bir değeri de karşılaştırabilir.
Özellikleri
ControlToCompare :Karşılaşmanın yapılacağı kontrol belirlenir.
ControlToValidate :Karşılaşmanın yapılacağı diğer kontrol belirlenir.
Text :Karşılaşma sonucu olası hata durumunda kullanıcıya gösterilecek uyarı mesajı.
Type :Karşılaşma yapılacak verilerin tiplerini bu Type özelliği sayesinde belirleyebiliriz.Örnek olarak int türünde karşılaştırma yapacaksak, iki kontrole “Ahmet” kelimesini yazsak dahi karşılaşma olumlu olmayacaktır.Karşılaştırma int türünden olacaksa, karşılaştırılan verilerde int türünden olacaktır(diğer türler içinde geçerlidir)
Operator :Karşılaştırma biçimini belirleriz.Eşit mi?,büyük mü?,küçük mü? vs..
ValueToCompare :Eğer karşılaştırma işlemi,kontrolümüze girilen değerle ve sabit bir veriyle yaptıracaksak bu özellik kullanılır.
ErrorMessage :ValidationGroup nesnesinde gözükecek mesajı saklar.
ValidationGroup :Birden fazla Button nesnesinin bulunduğu bir sayfada, RequiredFieldValidator nesnelerimizi bütün butonlar tetikleyeceklerdir.Ben B1 butonuna tıklandığı zaman RequiredFieldValidator nesnemizin, kendisine bağlanan nesneyi kontrol etmesini isteyebilirim.Ancak B2 butonuna bastığım zamanda bu kontrol gerçekleşecektir.Yani bir gruplama yapılmadığından, sayfa her servera gönderilmek istendiğinde RequiredFieldValidator nesnemiz devreye girecektir.
İşte böyle bir durumda istediğimiz butonda devreye girmesini istiyorsak bu özelliği kullanırız.Sayfada kullandığımız bütün RequiredFieldValidator nesneleri ValidationGroup özelliğiyle bir gruba bağlanır.Ve bu grubu çalıştırmasını istediğimiz Buttonumuzun ValidationGroup özelliğinide aynı grupba bağlarsak, artık o saatten sonra o RequiredFieldValidator nesnelerimiz o Button’a tıklandığında işleyeceklerdir.
Şimdi ise RegularExpressionValidator kontrolünü diğer sayfada inceleyeceğiz.
RegularExpressionValidator
Bir kontrolün içeriğinin belli bir formata(örneğin e-mail formatı) göre uyup uymadığını denetler.
Özellikleri
ControlToValidate :Kontrol edilecek nesneyi buradan veriyoruz.
ErrorMessage :ValidationGroup nesnesinde gözükecek mesajı saklar.
ValidationExpression :Hangi formatta kontrol ettirmek istiyorsak bu özelliği kullanıyoruz.
Yukarıda gördüğünüz gibi RegularExpressionValidator nesnesinin kontrol ettiği nesneyi hangi formatta kontrol edeceğini yukarıdaki listeden seçiyoruz.Validation expression adlı kısımda seçtiğimiz formatın kod karşılığı gözükmektedir.Aslında ValidationExpression özelliğine verilen değerde bu kod olmaktadır.
Şunuda belirtmek istiyorum ValidationExpression daki hazır telefon numaraları, Türkiye telefon numaraları standardına uygun değildir.Biz Regular Expression Türkçe telefon formatını bulup, listeden “Custom” seçip, boş Validation expression kısmına elimizle yapıştırmamız lazımdır.Bu arama işlemini internetten yapabilirsiniz.
Regular Expression kodlarının nasıl yazıldığıyla ilgili bir yazım olmayacaktır.Doğrusu bende bilmiyorum.Ancak öğrenmek istiyorsanız http://www.csharpnedir.com/articles/read/?id=129 adresindeki makaleye göz atabilirsiniz.
Şimdi ise RangeValidator kontrolünü diğer sayfada inceleyeceğiz.
RangeValidator
Bir kontrol içeriğinin belli aralıklarda olup olmadığını denetler.
Özellikleri
ControlToValidate :İçeriği kontrol edilecek nesneyi giriyoruz.
Type :Hangi tipte kontrol edilmesini istiyorsak buradan ayarlıyoruz.
MinumumValue :Minumum değer.
MaximumValue :Maximum değer.
Şimdi ise ValidationSummary kontrolünü diğer sayfada inceleyeceğiz.
ValidationSummary
Validation kontrollerinin ErrorMassage özelliklerinin gösterildiği alandır.