MVC’de Veri Akışı (Genel Bakış)

Controller → ViewBag → View | Controller → TempData → Redirect → Controller → View | Browser(User) ↔ Session (Server)

ASP.NET MVC veri akışı: ViewBag, TempData (Redirect), Session

ViewBag Tek Request

Amacı: Controller’dan View’a küçük veri göndermek.
Ömrü: Tek istek (Redirect’te kaybolur).

Controller


    public ActionResult Index()
    {
        ViewBag.Message = "Merhaba Dünya!";
        return View();
    }

                

View (Razor)

<h2>@ViewBag.Message</h2>
ViewBag akış diyagramı
Tek yön: Controller → View (Redirect yoksa)

TempData Redirect Senaryoları

Amacı: Bir istekten diğerine veri taşımak.
Ömrü: Redirect sonrası bir kez daha okunur (aksi halde silinir).
Not: Keep() / Peek() ile koruyabilirsiniz.

Controller (Set & Redirect)

public ActionResult Kaydet()
{
    TempData["Durum"] = "Kayıt başarıyla eklendi.";
    return RedirectToAction("Index");
}

Controller / View (Read)

public ActionResult Index()
{
    ViewBag.Mesaj = TempData["Durum"];
    // TempData.Keep(); // tekrar kullanmak istersen
    return View();
}
TempData redirect akış diyagramı
Redirect ile Controller → Controller → View akışı

Session Kullanıcıya Özel

Amacı: Kullanıcıya ait verileri oturum süresince saklamak.
Ömrü: Oturum kapanana ya da süre dolana kadar.

Controller (Set)

public ActionResult Login(string username)
{
    Session["KullaniciAdi"] = username;
    return RedirectToAction("Index");
}

Controller / View (Read)

public ActionResult Index()
{
    var ad = Session["KullaniciAdi"]; // null kontrolü yapın
    return View();
}
Session kullanıcı-oturum ilişki diyagramı
Tarayıcı (kullanıcı) ↔ sunucu Session durumu

Karşılaştırma Tablosu

Özellik ViewBag TempData Session
Veri Tipi Dinamik Key-Value Key-Value
Ömrü Tek Request Redirect sonrası tek/okunana kadar Oturum süresince
Kullanım Alanı View’a küçük veri aktarma Redirect sonrası mesaj/flag Kullanıcıya özel kalıcı veriler
Notlar Redirect’te kaybolur Keep()/Peek() ile korunabilir Aşırı kullanım performansı etkiler

Hangi Durumda Hangisini Kullanmalı? (Karar Ağacı)

Hangi durumda ViewBag, TempData, Session seçilir? Karar ağacı

Sonuç Olarak

Üç yapı benzer dursa da kapsam ve ömürleri farklıdır. ViewBag tek request, TempData redirect-köprüsü, Session ise kullanıcı-oturum durumudur. Doğru yerde doğru aracı seçmek hem performansı hem de okunabilirliği artırır.