19 Ağustos 2020 Çarşamba

ViewBag - ViewData - TempData Farkları?

 Merhabalar,

Verilerimizi MVC mimarisinde Controller katmanından, View katmanına taşımak istersek (tersi söz konusu değil) en çok kullanılan yapılar aşağıdaki gibidir.

  • ViewData
  • ViewBag
  • TempData 
Bu üç yapının kullanımı birbirine çok yakın olsa da önemli farklılıkları vardır. Şimdi bunları sırasıyla inceleyelim.

ViewData

Controller sınıfından view sayfalarına viewdatadictionary sınıfı ile veri taşınır. 
ViewData ViewDatadictionary sınıfından türetilen bir dictionary nesnesidir. Dictionary mantığıyla kurgulanmıştır. Veri transfer işlemlerinde "key-value" eşleşmesinden faydalanır. Key değeri olarak string tanımlamayı kabul eder.  

public ViewDataDictionary ViewData { get; set; }

 

  1. ViewData kullanarak Controller üzerinden View tarafına veri çekmek için kullanılır. Tersi yapılamaz.
  2. Sadece geçerli istek sırasında okunabilir sonrasında yönlendirmeden sonra değeri null olacaktır.
  3. Veriyi değişkene almak için tip dönüşümü yapmamız gerekli.

    //Doğru Kullanım 
    1- string demo = (string)ViewData["demo"];
    2- string demo = ViewData["demo"] as string;

    

    //Hatalı
    string demo=ViewData["demo"];



View üzerinden erişim


ViewBag

ViewBag, C# 4.0 ile gelen dinamik veri tipi özelliklerinden faydalanır, hataları runtime zamanında alınır. 
Temelde ViewData gibi Controller üzerinden View tarafına veri çekmek için kullanılır.
Sadece geçerli istek sırasında okunabilir.
Yönlendirme sonrasında kendini imha eder, null değer alır.
Veriyi değişkene almak için tip dönüşümü yapmanız gerekmez.

Oluşturduğumuz ActionResult içerisine bir ViewData attık ve değer olarak string bir ifade yerleştirdik.


View üzerinden erişim


TempData

ViewData ile aynı kullanımdadır.  TempDataDictionary Key-Value olarak kurgulanmıştır. Diğer transfer yapılarına nazaran TempData veriyi Request bazlı saklamaz.  TempData üzerindeki veriyi üçüncü Request’e aktarmak istiyorsak Keep() metodunu kullanmalıyız.  Bu şekilde TempData LifeCycle kısa bir süre uzamış olur. TempData kullanımı öncesinde ViewData’da olduğu gibi TypeCast işlemi yapmalıyız. Farklı metotlardan çağırıp kullanabiliriz. 


Hiç yorum yok:

Yorum Gönder

SQL Çalışma Sorularının Çözümü

 -Ürünler tablosundaki ürünlerden Rengi siyah,silver ya da multi renkte olanları fiyat bilgisine göre büyükten küçüğe getirilip gösterilecek...