Merhabalar, Bir önceki yazımın devamı olan bu bölüm içerisinde, sizlere TempData nedir ve kullanımı hakkında bilgiler veriyor olacağım.
TempData
Tempdata, verileri başka bir istekte okunana kadar üzerinde tutma özelliğine sahiptir.
Bir proje üzerinden nasıl kullanıldığını beraber inceleyelim.
Sırası ile komutlarımız,
-
cd Desktop => ilgili dizinimizi masaüstü olarak ayarlıyalım.
-
mkdir StateManagement => StatManagement adında bir klasör oluşturalım
-
cd StateManagement => dizin olarak, oluşturduğumuz klasörü belirleyelim
-
dotnet new mvc -n TempDataApp -f netcoreapp3.1 => dotnet cli komutlarını kullanarak 3.1 versiyonu ile yeni bir mvc projesi oluşturuyoruz.
-
cd TempDataApp => dizinimizi proje ana dizini olarak belirliyoruz.
-
code . => code(boşluk).(nokta) diyerek vscode’u proje dizininde açıyoruz.
Projemizi açtıktan sonra, Controllers içerisind yer alan HomeController’a gelelim aşşağıdaki gibi düzenleyelim.
public class HomeController : Controller { [HttpPost] [ActionName("Index")] public IActionResult Index() { TempData["Message"] = "Temp data mesaj içeriği"; return RedirectToAction(actionName: nameof(Index)); } }
Yukarıdaki işlemde TempData nesnesini kullanarak Action içerisinde bir değer belirledik. Burdaki şekliyle tanımlama yapabildiğimiz gibi yeni gelen Attribute desteği kullanarakda kullanabiliryoruz. Aşağıdaki örneği inceleyiniz.
public class HomeController : Controller { public IActionResult Index() => View(); [TempData] public string Message { get; set; } [HttpPost] [ActionName("Index")] public IActionResult Index_Page() { Message = "Temp data mesaj içeriği"; return RedirectToAction(actionName: nameof(Index)); } }
Yukarıdaki kullanımda Controller içerisinde bir property ekleyerek [TempData] attribute ile, onun bir tempdata nesnesi olduğunu belirtiyoruz. Her iki kullanım şeklide geçerli olacaktır. Index view’ına gelerek aşşağıdaki kod bloklarını ekleyiniz.
@if(TempData.Peek("Message") != null){ <h1 class="display-4">@TempData.Peek("Message")</h1> } <form method="POST"> <button class="btn btn-outline-dark">Click!</button> </form>
Yukarıda butona tıkladığınızda TempData içerisinde mesajı ekleyecektir ve yönlendirme sonrasında ekranda mesajı görüntülüyor olucağız. Sayfayı yenilediğinizde mesaj ekrandan silinecetir.
TempData.Peek("Message") = TempData["Message"]
Yukarıdaki örnek, yeni kullanım şekli ve eski kullanım şekli gösterilmiştir.
İstek sonunda eğer datanın silinmesini istemiyorsanız. Gelen değeri Keep içerisinde göstermeniz yeterli olacaktır. Index sayfasını aşşağıdaki gibi düzenleyiniz.
@if (TempData["Message"] != null) { <h1 class="display-4"> @TempData["Message"] </h1> TempData.Keep("Message"); } <form method="POST"> <button class="btn btn-outline-dark">Click!</button> </form>
Bir sonraki yazıda görüşmek üzere.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
TAGs:ASP.NET Core MVC State, ASP.NET Core MVC State Management,MVC