ASP.Net VIEWS STRONGLY TYPED

View sayfamıza bir liste göndereceğimizi düşünelim. Bunu nasıl yapabiliriz. Birinci olarak viewdata nesnelerinden bir tanesi ile olabilir. Örneğin ViewBag ile;
Controller

public ActionResult List() 
{
    var products = new List();
    for(int i = 0; i < 10; i++) 
    { 
        products.Add(new Products { Title = "Product " + i });
    }
    ViewBag.Products = products;
    return View();
}

View

    @foreach (Products p in (ViewBag.Products as IEnumerable)) {
  • @p.Title
  • }

Ayrıca listeyi dynamic veri tipine çevirerekte kullanabiliriz. Bunu kullanmamızın amacı daha okunaklı bir kod içindir. Tabi intellisense özelliğinden yararlanamayız.

    @foreach (dynamic p in ViewBag.Products) {
  • @p.Title
  • }

Böyle kullanınca temiz bir kod oluyor ama, otomatik sözdizim ve compile time (derleme zamanı) hata yakalamanın faydalarından yararlanamıyoruz.
Şimdi bu mantıkla devam edersek strongly-typed view kavramı karşımıza çıkıyor. ASP.NET MVC, aynı mantıkta modellerimizi Controller içerisindeki View döndüren fonksiyonların içerisinde parametre olarak gönderirsek, bu modeli gizli olarak viewData nesnesi içerisinde göndermektedir. Örnek üzerinde daha iyi anlaşılır bu;

public ActionResult List() 
{
    var products = new List();
    for (int i = 0; i < 10; i++) 
    {
        products.Add(new Products {Title = "Product " + i});
    }
    return View(products);
}

Sahne arkasında ViewData.Model nesnesine değer atanıyor. Daha sonra bu modelimizi View içerisinden @model anahtar kelimesini kullanarak çekebiliriz. Ek olarak modelimizin tipinide tanımlayabiliriz.

@model IEnumerable
    @foreach (Products p in Model) {
  • @p.Title
  • }

Gördüğünüz gibi yukarıda yaptığımız örnekleri view fonksiyonuna modeli parametre olarak göndererek yapmış olduk. Modeli kullanabilmek içinde @model kelimesi ile birlikte modelin yolu ve tipinide belirledik. Her defasında modelin yolunu belirtmemek için ~/Views/web.config içerisinde aşağıdaki gibi bir tanımlama yapabiliriz.

	
        
            
            
            
            
            
        
    

 

MVC mimarisinin temel mantığı bu şekildedir. Nesnelerimizi Controller lar aracılığı ile View sayfalarına göndermek. View içerisinde bu verinin görüntülenmesini sağlamak.