ASP.NET MVC ViewBag, ViewData, TempData

ASP.NET MVC ViewBag, Controller sınıfları ve View sayfaları arasında veri taşımamıza yardımcı olacak nesneler vardır. Bunlardan en önemlisi ViewData, ViewBag ve TempData nesneleridir.

ASP.NET MVC ViewBag, ViewData, TempData

ASP.NET MVC ViewBag, ViewData, TempData

Bu üç veritaşıma yöntemleri arasındaki farkı örnekler ile göstermeye çalışalım.

ViewData

Controller sınıfları ile View sayfalları arasında ViewDataDictionary(ViewData) sınıfı ile taşınmaktadır. ViewData nesnelerine veri aktarıp, okuyabiliriz. Şimdi basit bir kodlar ViewData nesnesine değer aktarımını görelim.

ViewBag

ViewBag ise ASP.NET MVC3 te C# 4 ile gelen dynamic anahtar kelimesinin getirdiği bir yeniliktir. ViewData’nın dinamik(run time binding) halidir. Söz dizimi

TempData

Bu üç nesne arasındaki küçük ve kritik farklar vardır. Örneğin ViewBag nesnesi dynamic tipinde bir nesne olduğundan bununla alakalı hatalar compile time’da değil run time da yakalanır. Teknik anlamda ViewData nesnesinden farkı yoktur. Sözdizim olarak farklıdır.

En büyük ve önemli fark TempData ile diğer ikisi arasındadır. ViewData ve ViewBag nesnesi o anki HTTP istek içerisinde geçerlidir. Yaşam döngüsü bir sonraki isteğe kadardır. Ama TempData bir alt HTTP istek içinde geçerlidir. Yaşam döngüsü o anki ve bir sonraki HTTP istek içerinde geçerlidir. Daha iyi anlamak için farklı bir kaç örnek üzerinde görelim;

Örnek 1

Üç nesnenin örnek kullanımı ve çıktısı.

Controller

View

Çıktı

ViewBag mesaj!ViewData mesaj!TempData mesaj!

Örnek 2

TempData nesnesinin farklı özelliği.

Controller/Index

Contoller/About

Index metodu içerisinde oluşturduğumuz TempData About metoduna aktarılır ama diger iki nesne debug ta baktığımızda null olacaktır. TempData ile geçirdiğimiz veriyi About.cshtml içerisinde bir önceki örnekteki gibi kullanabiliriz.

TempData için sakıncalı bir durum yönlendirdiğimiz About sayfası içerisindeyken sayfası yenilediğimiz zaman veriyi kaybederiz. Bundan dolayı TempData yerine bu işlemleri daha sonra göreceğimiz ViewModel mantığıyla halletmeliyiz. İpucu olması açısından aynı işi yapan ViewModel mantığını da kodla örnekleyelim.

Controller/Index

Contoller/About

Neden veritabanına kayıt yapıp tekrar diğer sayfadan bu kayıta ulaşmaya çalışan bir örneği, önceki TempData örneğinin alternatifi olarak verdik. Çünkü gerçek hayatta aslında bir metottan diger metoda veriyi böyle bir senaryo için aktarmak isteriz. İleride yapaçağımız örneklerle daha da açıklayıcı olacaktır.

Peki bu nesneleri ne zaman kullanmalıyız.

  • Model sınıfımıza ait bir veriyi açılır listeden (drop down list) seçeceksek bu listenin verisi için kullanabiliriz.
  • Küçük ölçekli veriler.
  • Kullanıcıya verilen uyarı mesajları.
  • Örneğin kullanıcı kayıt olduktan sonra kullanıcıya gösterilen profil özeti ekranı.

Kısacası geçici olarak tanımlayabileceğimiz küçük ölçekli verileri içeren bir çok iş için kullanabiliriz.


📚 ASP.NET MVC ViewBag… Benzeri Makaleler


📚 Kaynaklar


✍ Lütfen ASP.NET MVC ViewBag konulu makale için olumlu-olumsuz tüm görüşlerinizi bana yorum yada mail yolu ile iletmeyi ihmal etmeyin.

🔗 Sosyal medya kanallarından ASP.NET MVC ViewBag konulu makaleyi paylaşarak destek olursanız çok sevinirim.

👋 Bir sonraki makalede görüşmek dileğiyle.

ASP.NET MVC ViewBag Nedir?, ASP.NET MVC ViewBag Nasıl Kullanılır?

4.7/5 - (6 votes)

Murat Öner sitesinden daha fazla şey keşfedin

Okumaya devam etmek ve tüm arşive erişim kazanmak için hemen abone olun.

Okumaya devam et