ASP.NET MVC 3 Razor ile Uygulama Geliştirme Yazı Dizisi 3 – View Engine Nedir? Razor Nedir? Özellikleri Nelerdir?


View Engine

View’lerinizi HTML çıktısı olarak render etmek için kullanılan bir mekanizma/teknoloji’dir. Şu an da MVC’de kullanabileceğiniz View Engine’lar:

Razor View Engine

Razor söz dizimi, programcının bir HTML yapı akışını kullanabilmesine olanak tanıyan ve C# tabanlı bir şablon etiketleme söz dizimidir. MVC3 ile birlikte Razor çıkana kadar MVC 1 ve 2’de defaul olarak kullanılan Web Forms View Engine’di. Çünkü bu engine, ASPX/ASCX/MASTER dosyalarını ve Web Forms’daki sözdizimi kullanır. Çalışmasında herhangi bir sorun yoktu fakat yazımı, kullanımı ve bakımı uğraştırıcı ve zahmetliydi. Razor’la artık çok güçlü bir View Engine kavuştuk. Web Forms kullanımı ve Razor kullanımına örnek:

Web Forms:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MvcApplication1.Models.LogOnModel>>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    List
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>List</h2>

<p>
    <%: Html.ActionLink("Create New", "Create") %>
</p>
<table>
    <tr>
        <th>
            UserName
        </th>
        <th>
            Password
        </th>
        <th>
            RememberMe
        </th>
        <th></th>
    </tr>

<% foreach (var item in Model) { %>
    <tr>
        <td>
            <%: Html.DisplayFor(modelItem => item.UserName) %>
        </td>
        <td>
            <%: Html.DisplayFor(modelItem => item.Password) %>
        </td>
        <td>
            <%: Html.DisplayFor(modelItem => item.RememberMe) %>
        </td>
        <td>
            <%: Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) %> |
            <%: Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) %> |
            <%: Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ }) %>
        </td>
    </tr>
<% } %>

</table>

</asp:Content>

Razor:

@model IEnumerable<MVC.Internet.Models.RegisterModel>

@{
    ViewBag.Title = "List";
}

<h2>List</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table>
    <tr>
        <th>
            UserName
        </th>
        <th>
            Email
        </th>
        <th>
            Password
        </th>
        <th>
            ConfirmPassword
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.UserName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Email)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Password)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ConfirmPassword)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
        </td>
    </tr>
}

</table>

Artık çok daha rahat yazabiliyoruz.

Razor Özellikleri

  • Kısa/Özlü, Anlamlı ve Akıcı – Razor karakter sayısını ve tıklayacağınız tuş sayısını en aza indirir ve kodun akışını akıcı yapar, hızlandırır. Bir çok template sözdiziliminin aksine, HTML’iniz içerisinde server blogunu ayrıca belirtmenize gerek yoktur. Derleyici kodunuzdan anlam çıkarak zekidir. Kodunuz temizdir. Razor ile hızlı ve eğlenceli yazın.
  • Öğrenmesi Kolay – Min kod gereksinime sahip olduğu için öğrenmesi son derece kolaydır. Sahip olduğunuz dili ve HTML bilginizi kullanırsınız.
  • Yeni Bir Dil Değildir – Yeni bir dili öğrenmeyi zorunlu kılmanın yerine var olan C#/VB dillerinindeki becelerinizi kullanmasını sağlar.
  • Herhangi Bir Text Editor İle Çalışır – Razor herhangi bir özel araç(tool)a ihtiyaç duymaz. Herhangi bir text editoru kullanabilirsiniz. Notepad bile olabilir.
  • Mükemmel Intellisense – Yukarıdaki madde de herhangi bir editorde yazabilirsiniz dedim. Şimdi de gelmiş intellisense diyorum. Evet diyorum çünkü Visual Studio 2010 update’i ile tamamen Razor’u destekleyen bir text editore sahip olursunuz.
  • Test Edilebilir – Yeni View Engine uyarlaması Test Uniteleri aracılığıyla test edilmesini destekler.
Bir sonraki yazımda MVC projelerimizdeki her bir öğenin ne iş yaptığını ve ne olduğunu inceleyeceğiz.

Kaynakça:

Sonraki yazılarımda görüşmek üzere MVC ile kalın.

Her türlü soru ve önerinizi lütfen benimle paylaşın.

, ,

  1. #1 by gokhan on January 13, 2012 - 2:48 am

    çok açıklayıcı olmuş elinize sağlık

  1. ASP.NET MVC 3 Razor ile Uygulama Geliştirme Yazı Dizisi 4 – Proje İçerisinde Öğelerin Anlamları Neler? « Mahmut Can Sözeri
  2. ASP.NET MVC 3 Razor ile Uygulama Geliştirme Yazı Dizisi 5 – İlk Uygulamamız (Empty Template ile) « Mahmut Can Sözeri
  3. ASP.NET MVC 3 Razor ile Uygulama Geliştirme Yazı Dizisi 14 – Razor Nedir? Web Form ile Kullanım Farklılıkları Neler? Implicit Code Expression, Explicit Code Expression « Mahmut Can Sözeri
  4. [Blog Post(Turkish)] ASP.NET MVC İle İlgili Tüm Yazılarım (29 Yazı, 1 Yazı Dizisi ve 1 İpucu Serisi) « Mahmut Can Sozeri

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s