Sayfalar

30 Ocak 2013 Çarşamba

ASP.NET MVC DERSLERİ ( 3.2 ) VIEWS: TANIMLAMA

Bir önceki yazımızda Views nedir ve nasıl çalışır, anlatmaya çalıştık. Bu yazımızda da View dosyaları nasıl tanımlanır ve nasıl kullanılır, bu konular üzerinde duracağız.
Yeni proje oluşturduğumuzda projenin dizin yapısında Views klasörü vardır. Dizin yapısını incelersek her Controller sınıfı için Views klasörünün altında o Controller adında bir klasör daha vardır.

Ayrıca her Controller sınıfı için tanımlanan Views klasörünün altında ise, Controller sınıfı içerisindeki her metod için bir .cshtml uzantılı Razor sayfaları vardır.


Tüm bunlar birbiri ile arkaplanda (implicit) ilişkilidir. Controller sınıfları Views dosyalarını çağırırken bu ilişkiden yararlanırlar. Varsayılan şablonda Index.cshtml dosyasını çağıran Controller metodunu incelersek;
public class HomeController : Controller 
{
    public ActionResult Index() 
    {
        ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
        return View();
    }
}
Burada return View(); içerisinde view ismi tanımlanmadığı halde sayfa çağrılır ve Index sayfası görüntülenir. Bunun sebebi arkaplandaki ilişkiden kaynaklanmaktadır. Yani view sayfası için isim belirtmezsek bu ilişkiden dolayı, Controller sınıfı bu metod adı ile aynı olan view sayfasını, Controller ile aynı klasör içerisinde arar.

Controller metod içerisinde başka bir view sayfasınıda çeğırmak isteyebiliriz. Bunu yapmak için aşağıdaki gibi değiştirebiliriz kodu;
public ActionResult Index() 
{
    ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
    return View("NotIndex");
}

Yukarıdaki metod Views/Home/NotIndex.cshtml dosyasını çağıracaktır.


2 yorum:

  1. Merhaba. TestController isimli bir controller eklediniz fakat buna bağlı viewi belirtmediniz. Bu tarafını tam olarak anlayamadım. Eğer Views>Home klasöründe yeni bir view olusturursak otomatik olarak o viewin coltroller'i HomeController oluyor ben farklı bir controllere bağlamak istersem nasıl olacak?

    YanıtlaSil
    Yanıtlar
    1. MVC mimarisi bu şekilde çalışır. Yani controller lar ile view ler arasındaki bu ilişkinin adı zaten MVC, ama sizin dediğiniz gibi olursa zaten mimari değişir. asp.net MVC mimarisi contoller ve view ler arasında isim eşleştirmesini kullanıır. Yani siz home controller içerisinde bir action tanımlamıssanız, html sayfalarını aynı isimdeki klasor içerisinde arar.

      Sil