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…
Devamı...