Makale Özeti

Bu makalemizde ASP.NET ile gelen ve uygulama geliştirme zamanını verimli kullanmamızı sağlayan Bilgi Denetleme Kontrollerinden bahsediyoruz.

Makale

ASP.NET Sunucu Kontrolleri ailesi içerisinde yer alan oldukça kullanışlı kontrollerden bir grup da Bilgi Denetleme Kontrolleridir (Validation Controls). Bilgi denetleme kontrolleri çok sık yaptığımız çeşitli form değerlerinin bizim istediğimiz içerikte olup olmadığı kontrol eden kontrollerdir. Hızlıca örneklendirecek olursak örneğin bir siteye giriş yaparken kullanıcı adınızı ve şifrenizi boş geçemezsiniz. O halde bunları kontrol etmek için kod yazmalısınız, ASP ile bunu yapıyor olsaydık belki Javascript ile istemci taraflı bir kod yazacaktık ama ASP.NET içerisinde yer alan <asp:RequiredFieldValidator> kontrolü tam bu istediğimiz işi yapıyor.

Diğer bir örnek olarak bir kayıt formu düşünelim, şifreyi iki defa aynı girmelisiniz yoksa sistem kayıt olmanızı izin vermemelidir. Son olarak çok klasik bir kontrol olan e.posta adresi kontrolünü düşünelim, e.posta adresi içerisinde @ olan bir metin olmalıdır. İşte tüm bu işlemler için biz ASP.NET Bilgi Denetleme kontrollerini kullanabiliyoruz. Hemen örnek bir kayıt formu tasarlamakla başlayalım.

Visual Studio .NETi kullanarak basit bir form tasarlıyorum:

Şekil 1

Formum içerisinde kullanıcı adı, şifre, şifre yeniden ve e.posta değerlerini alacak olan textbox sunucu kontrolleri ve bunları anlatan label sunucu kontrollerinden oluşuyor. Bir de button sunucu kontrolüm var.

Burada dikkat etmemiz gereken tüm textboxlara düzdün ID isimleri vermek. Bu ID çok önemli çünkü programatik erişim kodumuz. Örneğin Textboxt4 olarak değil eposta olarak adlandırdığımızda anlamlı oluyor tüm bu metin kutuları. Şekil 2deki gibi kontrolü seçtikten sonra sağ taraftaki Properties penceresinden bunları kolaylıkla düzenleyebilirsiniz:

Şekil 2

Şimdi sıra geldi kontrollerimizi sayfaya eklemeye. Öncelikle "Kullanıcı Adı" alanının özelliği boş geçilemez olması, o halde kullanacağım kontrolün adı <asp:RequiredFieldValidator>

<asp:RequiredFieldValidator>

<asp:RequiredFieldValidator id="RequiredFieldValidator1"
runat="server" ErrorMessage="Kullanıcı Adı Girmelisiniz" ControlToValidate="kullanici_adi"></asp:RequiredFieldValidator>

HTML kısmından bunu elle yazabileceğiniz gibi Visual Studio .NET ortamında Toolboxı kullanarak sürükle bırak yöntemiyle de aynı atama işlemini gerçekleştirebilirsiniz:

Şekil 3

Düzgün ID isimleri verdiğimiz için ControlToValidate yani bu bilgi denetleme kontrolünün denetleyeceği kontrolün adı net olarak anlaşılabiliyor.

Şimdi ikinci olarak sifre1 ve sifre2 değerlerini karşılaştırıp aynı olup olmadıklarını bulmamız gerekiyor. Bunun için kullanacağımız kullanıcı kontrolünün adı <asp:CompareValidator>. Hemen nasıl bir kod yazmamız gerektiğine bakalım:

<asp:CompareValidator>

<asp:CompareValidator id="CompareValidator1"
runat="server" ErrorMessage="Şifrenizi Aynı Yazınız" ControlToValidate="sifre1" ControlToCompare="sifre2"></asp:CompareValidator>

Gördüğünüz gibi yine kod ekranında ControlToValidate diyerek hangi kontrolü, ControlToCompare diyerek hangi kontrolün içeriğiyle karşılaştırmam gerektiğini belirttim. Aynı şekilde bunu da Visual Studio .NET üzerinden yapıyor olsaydım:

Şekil 4

Şekil 4de gördüğünüz gibi bu kontrolün kontrol edeceği kontrol sifre1, bu kontrolün kontrol edeceği kontrolün kontrolü ise sifre2dir. Çok kontrollü bir ifade oldu :)

Son olarak gelelim son olarak e.posta adresini kontrol etme işlemine. E.posta adresi, posta kodu, telefon numarası gibi özel ifadeleri kontrol etmek için <asp:ReqularExpressionValidator> adlı ASP.NET sunucu kontrolünü kullanıyoruz. Örneğimizdeki eposta adresi için gerekli eklemeyi yapacağız ve bakın enteresan bir kod ile karşılaşacağız:

<asp:ReqularExpressionValidator>

<asp:RegularExpressionValidator id="RegularExpressionValidator1"
runat="server" ErrorMessage="E.posta adresinizi girmelisiniz" ControlToValidate="eposta" ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>

Yine aynı şekilde Visual Studio .NET ekranına bakacak olursak:

Şekil 5

Şekil 5de gördüğünüz ControlToValidate kısmında eposta IDsine sahip kontrolü kontrol etmesini söyledim bu kontrole, fakat diyorsunuz ki şu ValidationExpressionda yazan abuk subuk şeyler nedir? :) Aslında biraz üzerinde düşündükten sonra çözülüyor ama seminerlerde bana çok soru geldiği için size kısaca anlatayım; o tür ifadelere Regular Expressions kısaca regex deniyor. Ayrı bir scripting dili olarak düşünebilirsiniz regexi. Peki ben kendi regexlerimi nasıl yazarım derseniz yapmanız gereken http://www.regular-expressions.info adlı siteyi ziyaret etmek. Bu konuda ciddi bir makale içeriği çıkabilir, bilgi paylaşımı adına eğer bu konuda bir çalışma yaparsanız seve seve sitemizde yayınlayabiliriz.

Sonuç olarak henüz arka planda kod yazmadık ve gelin Visual Studio .NETde F5e basalım neler olacak görelim:

Şekil 6

Şekil 6da gördüğünüz gibi benim istemcim Internet Explorer olduğu için istemci tarafında Javascript ve Dhtml kullanılarak bilgi denetleme işlemi kolayca çözülmüş oluyor.

Özetle:

ASP.NET Bilgi Denetleme kontrolleri bize formlardaki bilgilerin doğruluğunu kontrol etmemizi sağlıyor ama işin güzel yanı bu istemcilere özel içeriği kendi üreterek yapıyor. Bir alanın boş olup olmadığını, aynı olup olmadığı veya özel bir ifadeyi içerip içermediğini kolayca bilgi denetleme kontrollerini kullanarak bulabiliyoruz. Ayrıca Visual Studio .NETi kullanarak uygulama geliştirme zamanımızı azaltıyor, daha fazla çözüme odaklanma zamanı elde edebiliyoruz.

Bilgiyi paylaştımız yeni yazılarda görüşmek dileklerimle,

 

Mehmet Nuri ÇANKAYA

cankaya@aspnedir.com