Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

MVC HtmlHelper Metodu Oluşturmak ve Çalışmak

Asp.NET MVC, Asp.NET Web Formlar kadar esnek Component desteği sağlamadığından dolayı, HtmlHelper sınıfını kullanarak bazı kontrolleri kendimiz oluşturmak zorunda kalabiliyoruz.Ancak bu konu çok ağır ve zahmetli bir işmiş gibi algılamanın lüzmu yok.Aslında bu konuda oluşturulan metod, hemen hemen her projede yazdığımız sıradan bir metod olacaktır.Haa tabi, her ne kadar Extension metod olsada, en nihayetinde geriye string tipinde html kodları dönen metod yazacağız.Haliyle, Web Formlarında bu tarz ihtiyaçlarımız olmadığı için biraz bu tip metotları yazmaya uzak kaldığımızı söyleyebiliriz.

Konuya giriş yapmadan önce, bazı durumları ele alıp sorgulayacağız.
Öncelikle şu sorulara cevap verelim..
Soru 1 ) Neden html kodlarını manuel olarak bizler yazmıyoruz ve for, foreach gibi döngülerde manuel yazarak, gerekli verileri gerekli alanlarına atayarak saydırmıyoruz? da HtmlHelper metodu yazıyoruz.

Çünkü, HTML kodunu manuel olarak yazmaktansa, bir programlama öğesi olan metotları kullanmak daha hızlı, daha basit ve  etkili olacaktır.Yani, HtmlHelper metodu oluşturmak zorunda değiliz belki ama, yaptığımız işi, yani programcılığı, en iyi ve esnek bir biçimde yapmakta bu sanatın, sanatkarlığıdır.

Soru 2 )Neden HtmlHelper sınıfında çalıştırılacak Extension metod oluşturmak zorundayım?

Bir kere zorunda olduğumuz bir durum yok.İstediğiniz isimde bir static sınıf oluşturup, içine istediğiniz html kodları dönen static metodlar yazıp, o sınıf ismi üzerinden o metodlarıda çağırabilirsiniz.Bu yöntemi kullanırsak, hiçbir eksiğimiz veya yanlışımız olmayacaktır.Ancak, Asp.NET MVC’de html kontrollerine HtmlHelper sınıfındaki “Html” adındaki bir özellikten(property) erişebiliriz.Eee haliyle, madem standart olarak MVC’de var olan html kontrolleri HtmlHelper sınıfı içerisinde, bende bu düzeni hiç bozmaz, adet olarak devam ettiririm.
HtmlHelper metodu oluşturmamız bu vicdani seçim meselesinden başka bir durum değildir.

Şimdi basit bir extension metod yazalım.Bu metodun aldığı parametreler sonucu, bir resim nesnesine link vererek sayfamızda gösterelim.

---ImageLink.cs---
    public static class ImageLink
    {
        public static string Image(this HtmlHelper Html, string ControllerAdi, string ActionAdi, object ParametreDegeri, string ResimYolu)
        {
            return string.Format("<a href=\"/{0}/{1}/{2}\"><img src=\"{3}\"/></a>", ControllerAdi, ActionAdi, ParametreDegeri, ResimYolu);
        }
    }

Evet gördüğünüz gibi, Extension metodumuzu yazmış olduk.Aşağıdaki gibi kullanırsak eğer, istediğimiz sonucu üretmiş olacaktır.

<%= Html.Image("Home","Index",3,"/Content/62305.jpg")%>

Eğer projemizi çalıştırırsak, Extension metodumuzun istediğimiz nesneyi ürettiğini ve istediğimiz gibi ekrana yerleştirdiğini göreceğiz.Bu yazdığım extension metodu sizler geliştirebilirsiniz.Örneğin, width heigth gibi değerleri parametrik olarak ayarlanabilir yapabilirsiniz.

Bu sefer ki yazımında sonuna gelmiş bulunmaktayız.
Faydalanmanız dileğiyle..
Bir sonraki yazımda görüşmek üzere..
İyi çalışmalar..

Bunlar da hoşunuza gidebilir...

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir