Asp.NET Validation Control
Validation Nedir Ne işe yarar?
Küçük bir senaryo düşünelim. Bir site tasarladık ve bu sitede üyelik sistemi ekledik. Veri tabanına gönderilecek veriler için girdi noktalarımız olacaktır.(Textbox, Combobox vs.) Üye olacak kişi girdi alanlarını doldurarak “Kaydet” butonuna tıkladığında bilgiler veritabanına gönderilecektir. Bu bilgiler gönderilmeden önce bir kontrolden geçirmemiz gerekmektedir. Mesela belli alanlar boş bırakılmalı ya da istediğimiz formatta yazılmalı. Bu tür işlemleri yapabilmek için birkaç seçeneğimiz vardır. şunlar;
- Bilgileri alıp, code behind’da belli kontroller yapmak buna göre exception oluşturmak ya da herhangi bir şekilde kullanıcıya bir hata mesajı göstermek. Tabi bu kontrolleri code behinde’da yapmak için, kullanıcının bu verileri girdiği sayfa postback (sayfa sunucuya gidip – gelmeli) yapılmalı, bundan dolayı bu yöntem çok kullanışlı ve verimli değil. ( Ayrıca çok kullanılmayan ve tercih edilmeyen bir yöntem )
- Diğer bir yöntem ise bu alanları JavaScript kullanarak client-side’da kontrol yapmak. Bu yöntem yukarıda anlattığıma göre biraz daha kullanışlı, ama bir sürü if-else yazmamız gerekecek.
İşte Asp.NET’teki Validation compenentleri bizi bu işlerle uğraşmaktan kurtarmak için tasarlanmış bileşenlerdir.
Şöyle ki; hem işimizi client-side hallediyor (yani boş alan kontrolü, ya da istenilen aralıkta olması, gereken bir değerin kontrolü gibi.) hem de bir sürü if-else kullanmaktan kurtarıyor. (Kısaca .NET nimetleri diyebiliriz.
)

ToolBox’tan Validation’a geldiğimizde üstteki Resmi göreceksiniz. Buradaki componentleri genel olarak açıklamak gerekirse;
RequiredFieldValidator: Doldurulması gerekli olan alanlar için kullanılır. (Kullanıcı adı, şifre)
RangeValidator: Bir alanın belirli değerler arasında veri girişi olmasını istenen durumlarda kullanılır. (Şifrenin 8 karakterden çok, 16 karakterden az olması )
RegularExpressionValidator: Bir alanın belli bir regex pattern’a uygun olması istenen durumlarda kullanılır ( Mail adresi vs.)
CompareValidator: Bir alanın diğer bir alana göre karşılaştırılması, ya da bir alanın tipinin karşılaştırılması için kullanılır.
CustomValidator : Adından da anlaşılacağı gibi validation’ı bize bırakan bir component.
Validation Summary: Validation özeti. Oluşturduğumuz validation nesnelerinin hata mesajları burada gösterilir.
Küçük bir örnek ile anlattıklarımızı uygulayıp detaylarını görelim.
Ben basit örnek için bir siteye üye olma senaryosu tasarladım.

Yukarıda gördüğümüz şekilde basit bir form ve Textbox’ların yanlarında gördüğünüz (*), (**), (***), (!) validation’ların Text değerlerine atanmış ifadelerdir.
Şimdi tek tek her Text alanı için eklenen validation kontrolün properties’ ini inceleyelim;
İlk olarak Textbox’larımızın (ID) isimlerini vereyim
Kullanıcı Adı : kadi
Şifre : sifre
İsim & Soyisim : isim
Kimlik Numarası : kimlikno
Telefon : tel
E-Posta : eposta
Tüm Text alanları için RequiredFieldValidator kullanıldı ve değer girilip girilmediğini kontol edeceğiz.
Kontrolün Properties görüntüsü:

Gördüğünüz gibi arkadaşlar. Şimdi tek seferlik gerekli tüm alanları anlatacağım. Bundan sonra ise sadece değişiklik yapılan alanları göstereceğim.
ControlToValidate: Hangi alanı kontrol edeceğimizi buradan seçiyoruz. Açılır listemiz var ve buradan alanları secebiliyoruz.
Display: 3 seçeneğimiz var;
-Static: Validation text değerinin gösterileceği yer, baştan ayrılır. (Burada static gözükse de, bence bunu tercih etmeyin; çünkü table’ların aralıklarının kaymasına sebep olabiliyor)
-Dynamic: Text değerinin gösterileceği yer ayrılmaz. Gösterilmesi gereken durumda, uygun bir şekilde yer ayrılır.
-None: Bu seçenekte ise bu değer hiç gösterilmez. Fakat ValidationSummary’de ErrorMessage gözükür.
EnabledClientScript: Client’da çalışabilmesi için. (Yani diyelim ki ismi girmedik. Uyarı verdi. Tekrar ismi girdiğimizde hemen otomatik olarak validation uyarı (*) ifadesini kaldıracaktır).
Error Message: Burada yazdığımız hata mesajları “Kaydet” butonuna bastığımızda ValidationSummary kontrolünde gösterilecektir.
SetFocusOnError: Adından da anlaşılacağı gibi, validation bir hata ürettiğinde, hata oluşturan kontrolün seçili olmasını sağlar.
Text: Girilen değer istenilen kriterlere uygun değilse validation kontrolünün ekrana çıktısı buraya yazılan olur.
ValidationGroup: Bu da birden fazla validation’ı bir grupta toplamaya yarıyor. Bizimde senaryomuzda kullandığımız üzere biraz anlatayım;
Formun altında “Kaydet” ve iptal butonlarımız var. Tamam’a basınca bu validation’ların çalışması lazım, iptal’e basınca çalışmaması lazım.
İşte burada işe yarayacak ValidationGroup, “Kaydet” butonun ValidationGroup özelliğine bizim oluşturduğumuz validation’ların grubunu yazınca, iptal butonu bu validation kullanmayacaktır.
Diğer Validation’larıda bu şekilde ayarlamalıyız. Tek yapacağımız değişiklik ControlToValidate seçeneğinde uygun kısmı şeçmektir.
Kullandığımız RangeValidator kontrolün properties’lerini inceleyelim.

Burada fazladan MinimumValue ve MaximumValue değerlerini giriyoruz.
RagulerExpressionValidator kontrolün properties’lerini inceleyelim.

Burada ise ValidationExpression kısmını dolduruyoruz. Ki burada girdiğimiz RegEx değeri E-Postamızın Geçerli olup olmadığını kontrol ediyor.
Sizin için bu değeri vereyim;
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
Genel olarak bir validation’ın özelliklerinden bahsettik. Ama özellikle bahsetmek istediğim iki validation nesnesi var, CustomValidator ve ValidationSummary.
CustomValidator da istediğimiz karşılaştırmayı yapabiliyoruz ve kod da yazabiliyoruz demiştim.
CustomValidator properties:

Gördüğünüz gibi fazladan bir şey eklemiyoruz. Fakat kod ile kontrol yapacağımızdan aşağıdaki alana geçiyoruz.

CustomValidator’ın properties penceresi ve events penceresi. Buradaki ServerValidate çok işimize yarayacak. Yanında gördüğünüz methodu oluşturunca ( çift tıklayarak ) görüceksiniz ki codebehind kısmında bir method gövdesi oluştu. İşte bu methodun içine yazacağımız her şey client-side’da çalışacak.
Bu kısmı kullanıcı ismi daha önceden kullanılmış mı diye kontrol edebiliriz.
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
}
Bahsettiğim bir diğer validation kontrolü ise, ValidationSummary idi; bu da bizim validation’larımızın hata mesajlarının toptan gözüktüğü yer.
Bunun Properties kısmını inceleyecek olursak;

Display mode: hata mesajlarının nasıl görüntüleneceği
ShowMessageBox: adında da anlaşılacağı üzere, errormessage’ları bir messagebox üzerinde göstermeyi sağlıyor.
ShowSummary: Sayfaya ValidationSummary’i koyduğunuz yerde hataların gösterilmesini sağlıyor.
Şimdi genel olarak öğrendiğimize göre artık hayal gücünüzle pek çok şeyi post etmeden kontrol edebilirsiniz.
(Harun Kardeşime teşekkürlerimi sunarım)
Herkese iyi çalışmalar.
Selametle…







