Anasayfa / Yazılım / ASP.NET / MVC Uygulamalarında HomeController ve Views

MVC Uygulamalarında HomeController ve Views

Öncelikle HomeController ile başlayalım. Controller klasörü altında HomeController.cs dosyası yer almaktadır. Bu dosyanın kodları mevcut durumda aşağıdaki yapıdadır:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Basit__MVCProje.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";

            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";

            return View();
        }
    }
}

HomeController.cs aslında içerisinde 3 metod barındıran bir class’tır. Bu metotlar About,
Index ve Contact metotlarıdır. MVC terminolojisinde bunlar genellikle action olarak
adlandırılırlar. Index adında olan action kontrolün ana giriş noktasıdır. MVC uygulamalarında
tüm kontroller aslında Controller Class’ının bir nevi uzantısıdır ve herhangi bir class
içinde yer alan her bir metod geriye ActionResult tipinde değer döndürür. Çoğu uygulamamızda
bu böyledir ancak bazı uygulamalarda farklı tipler geri dönebilir.
Bunlara daha sonra değineceğiz.

Uygulamamızda yer alan About ve Contact actionları ise Controller sınıfının bir diğer özelliği
olan ViewBag ile tanıştırıyor.

Peki nedir bu ViewBag? ViewBag uygulamamız içinde yer alan Controller ve View’ler arasındaki
verileri paylaşmamıza olan sağlar. Bu arada bazı terimleri direkt olarak ingilizce kullanmak
zorundayım. Action demem aksiyon dememden inanın bana daha uygun. View demem görüntü dememden
çok daha uygun. O yüzden şimdiden açıklama yapalım 🙂

ViewBag dinamik bir değişkendir ve önceden tanımlanmış özellikleri barındırmaz. ViewBag ayrıca
özellik olarak herhangi bir isim verebilmenizi ve içinde istediğiniz türden veri tipi
barındırabilmenize olanak sağlar.

Sonuç olarak her action bir View fonksiyonuna döndürülür. Bu metod Controller classında yer
alır ve diğer classlar içinde kullanılır. Ayrıca View’i yükler ve sizin .cshtml dosyanızda
bulunan Razor kodu çalıştırır.

View’leri incelediğimizde de projede Views klasörünü açtğımızda altında Home adında bir alt
klasör görüyoruz. Burada da 3 adet dosya bulunuyor. Bunlar About.cshtml, Contact.cshtml ve
Index.cshtml. Buradaki her bir doküman aslında controller classındaki aksiyon adı ile
ilişkilendirilmiş. cshtml uzantısı o dokümanın bize C# HTML dokümanı olduğunu gösterir. Bu
Razor syntaxın izin vermiş olduğu HTML ve C# kodlarından oluşturulmuş bir kombinasyon
dosyadır. Koşullu ifadelerde, döngülerde olduğu gibi ortak kodlama tekniği gibi
düşünebilirsiniz.

Aşağıdaki kodlarda default olarak gelen About sayfasının kodlarıdır. Kodlarda görüleceği üzere
“@” işareti mevcut. Razor elementleri “@” işareti ile başlamaktadır. Eğer @ işaretinin yanında
bür süslü küme parantezi görüyorsanız “@{” bu şu anlama gelir. Artık burada bir C# kodları
kullanılacaktır. Peki ne zamana kadar, süslü prantezin kapatma ayracı yani “}” kullanılana
kadar. Aşağıdaki kodda görüleceği üzere ViewBag sayfa başlığı yani title özelliği About olarak
atanıyor. ViewBag’deki title özelliği yaygın olarak kullanılan bir özelliktir. Bu özellik web
tarayıcılarında sayfaların başlığını göstermek için kullanılır. Örneğin üstte sitemize
girdiğinizde yazan “yazılım, csharp …” yazısı-başlığı gibi.

@{
    ViewBag.Title = "About";
}

@ViewBag.Title.

@ViewBag.Message

Use this area to provide additional information.

Burada Title özelliğine ek olrak h3 etiketi içinde bir de ViewBag.Message özelliğini
görüyoruz.

Shared klasörüne göz attığımızda ise burada _Layout.cshtml dosyasını görmekteyiz.
Bu dosyanın kodlarına göz attığımız da varsayılan olarak aşağıdaki şekilde olduğunu görürürüz.




    
    
    @ViewBag.Title - My ASP.NET Application
    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")


    
    
        @RenderBody()        
       
           

© @DateTime.Now.Year - My ASP.NET Application

       
   
    @Scripts.Render("~/bundles/jquery")     @Scripts.Render("~/bundles/bootstrap")     @RenderSection("scripts", required: false)

Görüleceği üzere burada her HTML sayfasında olabilen sayfa başlığı, header, footer, CSS,
javascript vb elementler mevcut. Burada görülen Render Body razor code kısımdır.

MVC yapısında ayrıca link oluşturabilmek için HtmlHelper classı, JavaScript dosyalarını tutan
Script classı, CSS dosyalarını tutan Styles classı ve özel içerik işaretleme için kullanılan
RenderSection’da bulunmaktadır, bunlara ilerleyen yazılarda yer vereceğiz.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir