MVCSHARP Ailesi ile yazılım geliştirmeye dair makaleler

ViewData ViewBag TempData Nedir

Merhaba arkadaşlar.

Bu makalemizde sizler ile WiewDataViewBag ve TempData konularını işleyeceğiz.

ViewData ViewBag TempData

ViewData

  1. ViewData ViewDatadictionary sınıfından türetilen bir dictionary nesnesidir. 
    public ViewDataDictionary ViewData { get; set; }

     

  2. ViewData ControllerBase sınıfının bir özelliğidir.
  3. ViewData Controller üzerinden View tarafına veri çekmek için kullanılır.
  4. Sadece geçerli istek sırasında okunabilir.
  5. Yönlendirme sonrasında kendini imha eder, null değer alır.
  6. Veriyi değişkene almak için tip dönüşümü yapmanız gerekli.
        //Doğru Kullanım
        1- string demo = (string)ViewData["demo"];
        2- string demo = ViewData["demo"] as string;
        
        //Hatalı
        string demo=ViewData["demo"];

     

Hemen basitçe bir örnek yapalım.

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

 public ActionResult Index()
 {
     ViewData["SiteName"] = "MvcSharp.com";
     return View();
 }

Veriyi ekrana direk basabilir veya bir değişkende tutabilirsiniz.

@{
    string demo = (string)ViewData["demo"];
    <span>@demo</span>
}

 

@{
    string demo = ViewData["demo"] as string;
    <span>@demo</span>
}
  <span>@ViewData["demo"]</span>

 

ViewBag

  1. ViewBag c# 4.0 ile gelen dinamik veri tipi özelliklerinden faydalanır.
  2. Temelde ViewData gibi Controller üzerinden View tarafına veri çekmek için kullanılır.
  3. ViewBag ControllerBase sınıfının bir özelliğidir.
  4. Sadece geçerli istek sırasında okunabilir.
  5. Yönlendirme sonrasında kendini imha eder, null değer alır.
  6. Veriyi değişkene almak için tip dönüşümü yapmanız gerekmez.

6. maddeye dikkat arkadaşlar hemen bir örnekle gösterelim.

@{
    string demo = ViewBag.Demo;    
    <span>@demo</span>
}

Evet arkadaşlar yukarıdaki kod bloğu ile ViewData için yazdığımız örnek kodu karşılaştırdığımızda farkı göreceksiniz. 

ViewData da verinin tipini bildirme zorunluluğu varken ViewBag'da böyle bir mecburiyetimiz yoktur.

 

TempData

  1. TempData TempDataDictionary sınıfından türetilen kısa ömürleri session da depolanan bir dictionary nesnesidir.
    public TempDataDictionary TempData { get; set; }

     

  2. ViewBag ControllerBase sınıfının bir özelliğidir.
  3. TempData geçerli istekten sonraki isteğe veri aktarmak için kullanılabilir. (Yönlendirme yaptığınızda veri default olarak bir defaya mahsus hafızada kalacaktır.)
    public ActionResult Index()
    {
        TempData["temp"] = "Temp";
        return Redirect("/demo/test");
    }
    
    public ActionResult Temp()
    {
        var TData = TempData["temp"] as string;
        return View();
    }
    

    Veriyi korumak için Keep("Anahtar Kelime") methodunu kullanabilirsiniz böylece TempData içerisindeki verinin imhasını erteleyebiliriz;
     

     TempData.Keep("temp");

     

  4. Yaşam süresi çok kısadır, hesef view tamamen yüklendiğinde kendini imha eder.
  5. Veriyi değişkene almak için tip dönüşümü yapmanız gerekli.
    string KullanimBir = TempData["temp"] as string;
    string KullanimIki = (string)TempData["temp"];
    string HataliKullanim = TempData["temp"];
    

Kaynak : http://www.dotnet-tricks.com/Tutorial/mvc/9KHW190712-ViewData-vs-ViewBag-vs-TempData-vs-Session.html

Umarım faydalı bir paylaşım olmuştur.

Saygılarımla Fatih BÜLBÜL.

Facebook Üzerinden Yorumlar