Sayfalar

7 Mayıs 2013 Salı

ASP.NET MVC DERSLERİ ( 5.5 ) STRONGLY TYPED HELPERS

Strongly-Typed Nedir?

Yeri gelmişken tanımınıda yapalım. Strongly-typed kelimesini, tipi kesin olarak belli anlamında çevirebiliriz. Yani değişken daha tanımlandığı anda tipi bellidir. Az çok kelimenin türkçe çeviriside fikir vermektedir. Bu tanımlamanın karşılığı ise weakly-typed dır. Sanırım örnekle açıklarsak, tam anlaşılacaktır.

 Weakly-Typed
a = 2;
b = "2";
 
birlestir(a, b);   // sonuç 22
topla(a, b);       // sonuç 4

Strongly-Typed
a = 2;
b = "2";
 
birlestir(a, b);        // tip uyumsuzluğu hatası
topla(a, b);            // tip uyumsuzluğu hatası
 
birlestir(str(a), b);   // sonuç 22
topla(a, int(b));       // sonuç 4

Bu bilgilerden sonra, ASP.NET MVC helper elemanlarını kullanırken tüm bunlar ne anlama geliyor. Önceki yazılarda bahsettiğimiz, helper elemanları, model ile eşleşirken string bir değer ile eşleşiyordu. Strongly-typed helper elemanlarını kullanarak, bu string değerle işimiz kalmaz ve lambda expression ile model eşleşmesini yapabiliriz.

View sayfasında en başta modelimizi tanımladık(@model Haber) ve modelin özelliklerini string bir değerle çağırdık. Şimdi aynı örnekleri strongly-typed helper elemanları ile yapalım.
@model Haber
@using (Html.BeginForm())
{
    @Html.ValidationSummary(excludePropertyErrors: true)
 
    @Html.LabelFor(m => m.KategoriId)
    @Html.DropDownListFor(m => m.KategoriId, ViewBag.Kategoriler as SelectList)
    @Html.ValidationMessageFor(m => m.KategoriId)
 
    @Html.LabelFor(m => m.Baslik)
    @Html.TextBoxFor(m => m.Baslik)
    @Html.ValidationMessageFor(m => m.Baslik)
 
    ...
 
    <input type="submit" value="Kaydet" />
}

Strongly-Typed helper elemanlarının sonunda "-For" soneki vardır. Gördüğünüz gibi, tanımlanan değişken, Haber nesnesinin bir örneği gibi davranır. Tanımlamalar yapılırken Intellisense açıktır ve modelin içerisindeki tüm özellikleri görebiliriz. Böylece compile-time zamanında hata takibi yapılabilir. Bu arada tüm HTML çıktıları, önceki yazılarda anlattığımız helper elemanları ile aynıdır.

Hiç yorum yok:

Yorum Gönder