MVC - Razor Engine

Razor Engine, sunucu tabanlı bir işaretleme dilidir.(Server Side Markup Language)

HTML kodları derlenirken sunucu taraflı kodları algılayan görüntüleme motorudur. C# ile birlikte dinamik sayfalar oluşturabiliriz. C# dilini destekler. MVC projelerinde View olarak bilinen .cshtml dosyalarında kullanılır.

Temel Özellikleri

  • C# ile HTML kodları içerir.
  • .cshtml uzantlı dosyalardır.
  • Varsayılan olarak HTML kodları içerir.
  • @ operatörü kullanarak HTML sayfalarında C# kodları yazabiliriz.
  • @ ile HTML ve C# kodları berabe çalıştırılabilir.

Kullanımı
@Tek satırlı C# kodları

@{
    //Çoklu C# kodları
}

Örnekler
Html ve C# kodlarının @ ve parantezler içerisine yazılması
@{
    string ad = "Mert";
    <span> @ad</span>
}

Değişken atamaları ve dört işlem yapılabilir.
@{
    byte adet = 3;
    int fiyat = 250;
    int toplamTutar = adet * fiyat;
    <h6>Toplam Tutar:<span>@toplamTutar</span></h6>
}

Kontrol yapıları ve switch case kullanımı da yapabilirsiniz. Aynı view'da aynı değişken sadece bir kere tanımlanabilir. dTarihi burada örnek bir değişkendir.
<p>
    18 yaşından büyük müsün?
    @{
        int dTarihi = 1997;
        if (dTarihi < 2000)
        {
        <p>Evet</p>
        }
        else
        {
            <p>Ne alakası var...</p>
        }
    }
 </p>

    @{
        switch (dTarihi)
        {
            case 1990:
                <p>Evet</p>
                break;
            case 2001:
                <p>Ne alakası var...</p>
                break;
            default:
                break;
        }
    }

Döngüler de Razor yapısında çalışabilecek kodlardandır.Listeleme template'de sıkça görebileceğiniz foreach ve HTML tagları bir arada kullanılmıştır.
@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.DosyaAdi)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.DosyaUzanti)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.DosyaTur)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.DosyaBoyutu)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Aciklama)
        </td>

        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.DosyaID }) |
            @Html.ActionLink("Details", "Details", new { id=item.DosyaID }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.DosyaID })
        </td>
    </tr>
}

MVC'de View'da Model'i kullanmak için yaptığımız tanımlama aynı zamanda Controller'dan View'a veri aktarabildiğimiz ViewBag yapısı da Razor'da kullanılır.
@model IEnumerable<MVC_Project.tbl_Kisi>

@{
    ViewBag.Title = "Index";
}

Dizi oluşturup, HTML 'de kullanılan listeleme işlemlerine bir örnek
    <h3>
        Kişiler
    </h3>
    <ul>
        @{
            string[] dizi = new string[4];
            dizi[0] = "Mert";
            dizi[1] = "Ali";
            dizi[2] = "Kerem";
            dizi[3] = "Baran";

            foreach (var item in dizi)
            {
                <li>@item</li>
            }
        }
    </ul>

DateTime kullanımı
@DateTime.Now.Year 

HTML Helper yapısı ile sunucu tarafında kod yazar gibi, kontroller oluşturabilir, using yapısı ile de kütüphane tanımlaması yapabiliriz.
<div>
    @using (Html.BeginForm("Index","Home",FormMethod.Post))
    {
        @Html.TextBox("text1");
        <br />
        @Html.CheckBox("check1",false)@("Onaylıyorum")
        <br />
        @Html.DropDownList("ID_Liste", listem);
        
        <input type="submit" value="Gönder"/>
    }
</div>



Yorumlar