ASP.Net VIEW MODELS

Bazen View sayfalarımızda domain modellerimizi direk kullanmak yetmeyebilir. Bundan dolayı farklı model tipleri kullanmak isteyebiliriz. Yani aynı View içerisinde ek bilgiler göstermek isteyebiliriz. Mesela alış veriş sitesi için sepeti düşünürsek, ürünle beraber ürünlerin toplam değeri bilgisi veya ek bir mesaj gibi bilgilerde görüntülenir.

View sayfalarına ViewBag nesnesi ile bu ek bilgileri gönderebiliriz. Bu kesinlikle işimizi görür, isteğimizi gerçekleştirir ve ayrıca esnek bir de kullanım sağlar.
Tabi ViewBag bütün model çeşitleri için yeterli olmayabilir veya modelimizi daha dar bir alanda yönetmek isteyebiliriz ve ya View sayfasını geliştiren kişi bizim modelimizin yapısını bilmiyorsa bile intellisense özelliği ile modeli daha rahat yönetmek isteyebilir. Bu durum bizim içinde geçerli.
Böyle bir durumda kendi isteğimize göre ve modelimizin yapısını bozmadan kendi modellerimizi yazabiliriz. Yani View sayfalarına özel modeller.
Alış veriş sepeti örneğini düşünürsek, View sayfamıza özel viewModel sınıfımız aşağıdaki gibi olabilir.

	public class ShoppingCartViewModel 
{
    public IEnumerable Products { get; set; }
    public decimal CartTotal { get; set; }
    public string Message { get; set; }
}

Şimdi View sayfamız içerisinde bu modelimizi kullanabiliriz.

@model ShoppingCartViewModel

Bu şekilde kullanımda strongly-typed-view özelliklerinden(tip uyumu kontrolü, intellisense ve tip dönüşümü kullanmamak) hepsini kullanabiliriz.