ASP.NET 2.0 HTML ve Web Sunucu Kontrolleri
Geçen yazımda Web form kavramını incelemiş bu çerçevede istemci sunucu mimari yapıya bir göz atmıştık.
Ayrıca HTML kontrolleri ile web sunucu kontrolleri arasındaki farka değinmiş, hangisini ne zaman kullanmamız gerektiğini anlatmıştım.
Geçen ayki yazımın sonunda bu ay için HTML ve web sunucu kontrollerini inceleyeceğimizi yazmıştım.
Bu ayki konumuz: HTML ve web sunucu kontrolleri.
WVD 2005 Express veya VS 2005 editörümüzün ana penceresinden baktığımız da bize göre sol tarafta bir “Toolbox” bulunur.
Bu “Toolbox” da yukarıda bahsettiğim HTML ve web sunucu kontrolleri bulunur.
Bu HTML ve web kontrolleri “Toolbox” da kendi içinde sınıflandırılarak saklanır. Buna göre editörümüzle tanımlı gelen
(3. parti kontroller eklenmeden ki hâli) 9 grup web sunucu kontrol kategorisi vardır.
Her bir kategoride de o kategoriye ait kontroller barınır.
Bu sınıflandırma geliştiriciye istediği kontrolü kolayca bulmak açısından büyük bir fayda sağlar.
Standart olarak gelen kontroller haricinde dilersek diğer firmaların geliştirdiği uyumlu kontrolleri de bu Toolbox a ekleyip kullanabiliriz.
Nitekim ekran görüntüsündeki ComponentArt kategorisi .NET 2.0 da bulunun kontroller değildir. Bunlar sonradan eklenmiş 3. parti kontrollerdir.
Web Kontrolleri Kategorileri
Her bir kategori kendine ait kontrolleri barındırır.
Bunu yandaki ekran görüntüsünden kolayca izleyebilirsiniz. Standart kategorisi altında bir web sayfasında doğal olarak kullanılan hemen bütün elemanlar bulunmaktadır.
Buraya baktığımızda buton, metin kutusu (TextBox) , Radyo düğmeleri gibi web kontrollerini görürüz.
Data kategorisine baktığımızda projemizin veri kaynakları ile ilişkisini belirleyen ve sunumlarını yapan kontrollerin olduğunu görürüz.
Login kategorisinde bir üyelik sistemi için gereken kontroller bulunur.
Navigation da site gezinim kontrolleri bulunur.
Bu kategorilere baktığımızda hemen HTML kontrollerini de görürüz. Bunlarla ilgili açıklamayı geçen ayki yazımda yapmıştım.
Sonuçta biz bir web projesi geliştirirken bu kontrollerden ihtiyacımız olanını alıp sayfamızın üzerine sürükle bırakla ekleyerek kullanırız.
Etkin bir proje geliştirebilmek için bu kontrolleri çok iyi tanımalı özelliklerini iyi kullanmalıyız.
Kontrolleri Kullanma Mantığı
Yukarıda da belirttiğim gibi bir kontrolü kullanmak için onu sayfaya dâhil etmeliyiz. Ancak bu tek başına bir şey ifade etmez. Esas işimiz bundan sonra başlar.
Bir kontrolü sayfaya dâhil ettikten sonra temel iki şeyi daha yapmalıyız.
Birincisi bu kontrolü şekilsel olarak düzenlemeliyiz.
İkincisi bu kontrolün sayfada hangi işlevi yerine getireceğini bildirmeliyiz.
Nesneye Yönelik Olay (event) Yönlendirmeli Akış
ASP.net 2.0 nesneye yönelik olay yönlendirmeli bir programlama algoritmasına sahiptir.
Bu yapıya göre bir uygulama nesnelerden oluşur ve bu nesneler belirli olaylarla yönlendirilir.
Hareketin olması için bir olayın (eylemin) gerçekleşmesi gerekir.
Örneği sayfaya bir şey yazdırmak istiyorsak butona basmalıyız veya sayfaya yazı yazdırmayı tetikleyecek herhangi diğer bir olayın (örneğin sayfanın yüklenmesi) gerçekleşmesi gerekecektir.
Yoksa durup dururken sayfaya herhangi bir metin yazılmaz.
Bu olay yönlendirmenin mantığıdır.
Olaylar nesneler arasında oluşur.
Burada buton ve sayfa birer nesnedir.
Bunlar da web kontrollerimizin kendisidir.
Kontrolleri kullanma mantığında bir kontrolü sayfaya dâhil ettikten sonra yapmamız gerekenlerden biri de bu işlevi; yani bir olayı tanımlamak olduğunu yukarıda yazmıştım.
Örneğin bir buton dâhil ettiysek sayfamıza bunun şekilsel tanımlamalarının yanı sıra olay tanımlamasını da yapmalıyız. Veya kontrol pasif olarak başka bir olaydan gelen etkiyi karşılamalı (Label veya diğer gösterim kontrollerinde olduğu üzere)
Örneğin bir buton için temel olay tanımı (birden fazla olay tanımı olabilir) ona tıklamaktır.
Bu eylemden sonra yapılacakları butonun tıklama yordamında kodsal olarak tanımlamalıyız. Butona tıklandığında bir mesaj çıkması gibi.
Bu mantık bütün diğer kontroller için de geçerlidir.
Bir olay tanımı veya olay sonuç gösterimi yapmadan bir kontrolü sayfaya eklemenin hiçbir manası yoktur.
Kontrolleri Kullanalım
Şimdiki örneğimizde son yazdıklarıma paralel olarak sayfaya bir buton ve Label ekleyerek kontrollerin kullanımını uygulamalı olarak göreceksiniz.
Yapmamız gerekeni biliyorsunuz, öncelikli olarak “Toolbox” dan kontrolümüzü bulup sayfaya eklemek.
Bu ekleme işlemini editörümüzden hem “Design” hem de “Source” kısmından yapabiliriz.
Label ve buton kontrolümüzü Toolbox’ın standart kategorisinden alıp sayfamıza dâhil edelim.
Yukarıdaki prensibe göre şimdi yapmamız gereken iki temel tanım var; bunlardan birincisi kontrollerimizin şekilsel biçimsel tanımı diğeri ise işlevsel tanımı.
Biçimsel tanım için kontrolümüzün özelliklerine bakmalıyız.
Her kontrolün mutlaka şekilsel özelliklerini belirleyen alanları vardır.
Bu alanlar kendi içinde temel iki kategoriye ayrılır; genel ve o kontrole özel biçimler.
Örneğin bir buton kontrolünün şekilsel özelliklerini belirleyen alanlar yanda gözükmektedir. Buna göre örneğin bir “border” kavramı geneldir ve daha pek çok kontrolde bu özelliğe rastlarsınız.
Bir zaman sonra bu özellik size tanıdık gelmeye başlar.
Buton kontrolünde olmamakla beraber çok özel kontrollerin kendine ait (örneğin wizard) şekilsel özellik tanımlamaları vardır.
Bunlar sadece o kontrole özeldir.
Bu özellikleri zaman içinde diğer genel özelliklerden ayırabilirsiniz.
Bir kontrolü dilediğiniz şekilsel özellikte oluşturmak için o kontrol işaretliyken sağ taraftaki “properties” penceresini tıklayıp şekilsel özelliklerine erişebilirsiniz. Veya “Source” kısmından ilgili kontrol bildiriminden kod tamamlamayla atayabilirsiniz.
Bir kontrolün şekilsel özelliklerini en iyi “Design” penceresinden deneme yanılma yolu ile bulabilirsiniz.
Örneğin ben buton ve Label kontrolümün şekillerini aşağıdaki gibi tanımladım:
Kontrollerimizin görüntüsel özelliklerini bu şekilde tanımladıktan sonra sıra onların işlevsel tanımlarına geliyor.
Bunun anlamı kod yazmaktır.
Yukarıda anlattığım yapıyı anımsarsanız olay yönlendirme mantığında her bir kontrol ya bir eylemi gerçekleştiriyor veya bir eylem sonucu oluşan verileri sunuyor.
Bu mantığa göre burada buton eylemi gerçekleştiren kontrol, Label ise eylem sonucu sunum veya gösterimi yapan kontroldür.
Olayların akışı Label kontrolünde bir gösterimle sona eriyor.
Bu işleyişin gerçekleşmesi için butona bir takım kodsal direktifler vermeliyiz.
Kodsal direktifler sayfanın script bölümünde yapılır.
Burada size verebileceğim iyi bir ipucu var.
Bir kontrolün temel olayını bulmak ve onu script kısmında tanımlamak için, o kontrole “design” penceresinde çift tıklayın.
Örneğin Butonun üzerine gelin ve çift tıklayın göreceksiniz sayfanın script kısmına butonun temel tıklama olay yordamı eklenmiştir
Sizin yapmanız gereken kullandığınız programlama diliyle, ilgili bildirimleri yazmak.
Bu örnekte biz butona tıklandığında Label kontrolüne bir metin yazılsın istiyoruz.
Yapmamız gereken Label kontrolümüzü tanımlamak –ki bu da bir kontrolün id si ile olur- ve onun “text” özelliğine ilgili metni atamaktır.
Butona tıklandığı anda akış Button1_click yordamına gidecek ve oradaki bu bildirimi işleterek Label da ilgili metni gösterecek.
Böylece web kontrollerini kullanma mantığını ve nesneye yönelik olay yönlendirme algoritmasını incelemiş olduk.