Geliştiriciler en çok, iyi bir model-controller yapısı oluşturmak için zaman harcarlar. Aslında uygulamanın altyapısı, geliştirilmesi, bakımı ve testleride zaten bu iki katman için olduğundan mantıklı olanda zaten en çok zamanı buraya harcamaktır.
Fakat kullanıcılar web sitesini ziyaret ettiklerinde gördükleri tek şey ise bu iki kısımdan ayrı çalışan bir HTML çıktısıdır. Kullanıcı uygulamayı ilk gördüğü anda sistemin altyapsının nasıl çalıştığını bilemez. Ve uygulamayı gördükleri ile değerlendirir. Bundan dolayıdır ki aslında Views kısmı uygulamamızın reklam kısmıdır da diyebiliriz.
İyi bir web sayfasının tasarımından ziyade içeriğinin View içerisinde nasıl gösterileceğini, temiz bir kodlamanın nasıl olacağını incelemeye çalışacağız. Çünkü web sayfasının tasarımı, kendi başına bir alandır. Kısaca bizim yapacağımız şey tasarım yapacak olanların işini kolaylaştırmak.
VIEWS AMACI
Daha önce controller sınıflarını anlatırken Controller sınıflarının, tarayıcıda gösterilebilen string değerler dödürdüğünü görmüştük. Bu mantıkla dinamik olarak bir HTML string oluşturabileceğimizi düşünürsek, o zaman tarayıcıya istediğimiz dinamik içeriği gösterebiliriz. Bu mümkün fakat gerçek hayatta HTML stringini bir fonksiyon içerisinde oluşturmak çok ta mantıklı değildir. Çünkü sürekli değişebilen, tasarım yapılması gereken durumlarda bu işlem imkansız hale gelebilir. İşte tam bu noktada karşımıza View kavramı çıkıyor.
View sayesinde HTML stringi fonksiyon içerisinde oluşturmak yerine, normal olarak bir html dosyası oluşturup, tasarımını yapıp, Controller sınıfına bunu döndürmesi için verebiliriz.
Aslında şöyle düşünebiliriz, elimizde bir liste olsun biz bunu bir web sayfasında göstermek için bir HTML string oluşturmaya kalkarsak hem bayağı bir zamanımızı alır, hemde çok etkili bir yöntem olmaz. Bunun yerine biz sayfa tasarımını yapsak, liste elemanlarının geleceği yerleri belirlesek, MVC de buraları doldursa güzel olmaz mı. İşte MVC mimarisinin yaptığı budur.
Kısacası, Modellerimizi, Controller sınıfı, View üzerinde istenilen yere konumlandırmamızı sağlar.
Örnek yaptıkça daha iyi anlaşılacaktır. Hızlıca bir View örneğini inceleyelim. Şimdilik ne iş yaptığı önemli değil sadece gösterim amaçlı.
Test.cshtml
@{ Layout = null; }
Test View
@ViewBag.Message
örnek View kodları...
Bu sadece gösterim amaçlı demiştik, bir kendi başına hiçbirşey ifade etmez. Yani controller sınıfı olmadan bu sayfayı görüntüleyemeyiz. ASP.NET ve ya PHP de sayfa bağımsız olarak görüntülenebilir. Ama Views sayfası bir controller sınıfı tarafından oluşturulması gerekir.Örneğin bu sayfanın görüntülenmesi için aşağıdaki gibi bir Controller sınıfımız olabilir.
public class HomeController : Controller { public ActionResult Test() { ViewBag.Message = "Hello World. Welcome to ASP.NET MVC!"; return View("Test"); } }
ViewBag kavramını daha sonraki konularda göreceğiz. Şimdilik sadece Controller sınıfında tanımlandığında View sayfasında kullanabileceğimiz "dinamic" bir değişken olarak bilin. Yaşam döngüsü bir sonraki sayfa isteğine kadardır.