MVC’de Model Oluşturma
Bu yazımıza kadar, Asp.NET MVC katmanlarından Controller ve View katmanlarını inceledik.Şimdi sıra geldi Model katmanını tanımaya.
Model, veritabanındaki tabloların Class yapısına dönüştürülmüş ve veritabanındaki kolonların sınıflarda propertyleşmiş olarak Entity yapısına dönüştürülmüş halidir diyebiliriz.
Visual Studio’da herhangi bir isimde Asp.NET MVC projesi üzerinden çalıştığımızı varsayarsak eğer, veritabanımızda “Insanlar” tablosunu Model katmanında sınıf olarak modelleyelim.
(Herhangi bir veritabanında Insanlar adında bir tablo olduğunu ve içinde ID,Ad,Soyad,DogumTarihi bilgilerini tutan kolonlar olduğunu varsayalım.)
Solution Explorer penceresinde Models isimli klasöre sağ tık, Add ve New Item sekmesinden Class seçip, Class ismi olarak “Insan” adını yazdıktan sonra Add butonuna basıyoruz.
Model katmanımız içinde Insan.cs adında bir sınıf oluşturmuş olduk.Bu sınıfın içine veritabanımızdaki kolonların property olarak tutulacaklarını yazıyoruz.
namespace ModelGiris.Models
{
public class Insan
{
public int ID { get; set; }
public string Ad { get; set; }
public string Soyad { get; set; }
public string DogumTarihi { get; set; }
}
}
Gördüğünüz gibi, Insanlar tablosunda varsaydığımız kolonları property olarak “Insan” sınıfına yazmış bulunmaktayız.
Şimdi bu Model katmanındaki Insan.cs sınıfını, Controller katmanındaki herhangi bir sınıfın da kullanarak View katmanına o propertylere girilen verileri gösterebiliriz.
O halde Controller katmanında “Insan(Controller)” adında bir Controller sınıfı oluşturuyorum.Aynı şekilde bu Insan sınıfının View elemanlarınıda otomatik derleyiciye oluştutturuyorum.
Model katmanıyla işimiz olduğundan dolayı, “Create a strongly-typed view” kutusunu seçip, “View data class” alanından “Insan” adındaki Model’ı seçiyoruz.”View content” Empty olarak seçiyoruz ve Add diyoruz.
“Insan(Controller)” adındaki Controller’ımızın içinde “Index” adında varsayılan bir ActionResult tipinden bir metodumuz mevcut.Bu metodumuzun View’ındaki sayfasında ben Model katmanımızdaki Insan sınıfında olan propertylerin değerlerinin bir şekilde gözükmesini istiyorum.Tabi bu propertyleri “Index” metodunda doldurmalı ve View katmanına bu Insan isminde olan sınıfın yani modelin nesnesini göndermeliyiz.
Model katmanında oluşturduğumuz Insan sınıfından bir nesne üretilerek öncelikle Action metod içinde işlemlerimizi yapalım.
Dikkat ederseniz, “Index” ismindeki metodumuzun scopeları içinde Insan yazdığımız zaman, Model katmanımızdaki “Insan” sınıfına ulaşamamaktayız.Buna ulaşmak için Model katmanını Namespace’i ile sayfamıza using etmeliyiz.

Gördüğünüz gibi, Model katmanını Namespace’i ile using ettikten sonra, Model katmanının içindeki Insan ismindeki sınıfa ulaşabildik ve bir Instance’ını alabildik.Bu nesne üzerinden de, Insan sınıfının bütün propertylerine ulabildik.Eee haliyle bu propertylere değerler girebileceğiz.
public ActionResult Index()
{
Insan insan = new Insan();
insan.ID = 1;
insan.Ad = "Gençay";
insan.Soyad = "Yıldız";
insan.DogumTarihi = "09.05.1992";
return View(insan);
//insan nesnesini View katmanına gönderiyoruz.Bu sayede View katmanında bu nesneye ulabileceğiz.
}
View katmanında “Insan” klasörü altında, Index.aspx dosyasında, propertylere girilen değerleri aşağıdaki gibi gösterebiliriz.
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<ModelGiris.Models.Insan>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Index
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<p>
ID :
<%: Model.ID %>
</p>
<p>
Ad :
<%:Model.Ad %>
</p>
<p>
Soyad :
<%:Model.Soyad %>
</p>
<p>
Doğum Tarihi :
<%: Model.DogumTarihi %>
</p>
</asp:Content>
En nihayetinde, Insan sınıfının propertylerindeki değerleri göstereceğiz.Peki bu Insan sınıfı bir Model değil mi?Evet, bir Model olduğundan dolayı, “<%: %>” içinde “Model” kodunu kullanırsak eğer, “Insan(Controller)” adındaki Controller’ımız içindeki “Index” adlı ActionResult tipinden olan metodun içinde oluşturulup, propertylerine değer atanan Insan tipinden “insan” adındaki nesnemiz View katmanına gönderildiğinden bu kodda o tipin nesnesi, ve o nesnenin değer dolu propertylerine erişmiş oluruz.Bunu sağlayan Index.aspx sayfasının kaynak kodlarındaki en üst satırda yazan, Inherits bloğudur.
Sonuç olarak ekranda propertymizdeki değerler gözükmektedir.

Bu yazımızında sonuna gelmiş bulunmaktayız.
Bir sonraki yazımda görüşmek üzere.
İyi çalışmalar…

Çok güzel anlatmışsınız teşekkürler
Merhaba Burak,
Güzel yorumun için ben teşekkür ederim 🙂
abi ben kisi classımdaki verileri index.cshtml kısmında @model olarak almak istiyorum ama list olarak yazınca görmüyor kisi yi. sebebi nedir acaba