در قسمت قبلی با ViewBag و ViewData آشنا شدیم، و توسط این ۲ مکانیزیم اطلاعات را از Controller به View خود ارسال کردیم. حال در این آموزش قصد آشنایی با TempData را داریم. TempData یک مفهوم در برنامهنویسی وب است که در برنامههای ASP.NET و ASP.NET Core استفاده میشود. TempData به عنوان یک مکان برای ذخیره کردن دادهها بین دو درخواست مختلف در یک متغیر موقت درون حافظه (یا session) در سرور عمل میکند.
زمانی که دادهای را در TempData قرار میدهیم، فقط در درخواست بعدی در دسترس است. و پس از آن از TempData حذف میشود. این برای انتقال دادههایی از یک اکشن به اکشن دیگر یا از یک صفحه به صفحه دیگر در برنامههای وب بسیار مفید است. از TempData معمولا برای اطلاعات موقت مانند پیامهای خطا یا تایید، انتقال اطلاعات بین صفحات پس از انجام یک عملیات، یا انتقال دادههای مورد نیاز برای نمایش در صفحات بعدی استفاده میشود.
قابلیت TempData، در زمانی که می خواهید اطلاعات غیر حساس (نه چیزی مثل رمز عبور) را از یک متد اجرایی action method به متد اجرایی دیگر در همان کنترلر و یا کنترلر دیگر، انتقال دهید، کاربرد دارد. TempData از نوع dictionary type است، و از کلاس TempDataDictionary مشتق میشود.
کدهای Controller
public IActionResult Index()
{
TempData["Name"] = "Mohammadreza";
return View();
}
کد های View
<body>
<h1>TempData Page</h1>
@TempData["Name"]
</body>
کدهای Controller
public IActionResult Index()
{
TempData["Name"] = "Mohammadreza";
TempData.Keep();
return View();
}
public IActionResult Index2()
{
var Name = TempData["Name"];
ViewBag.MyName= Name;
return View();
}
توجه : با استفاده از TempData.Keep(); میتوانیم یک مرحله بیشتر اطلاعات ذخیره شده در TempData را نگهداری کنیم.
زمانی که از TempData استفاده میکنیم به محض اینکه، مقدار درون آن نمایش داده شود حذف میشود. به عبارتی فقط یک بار نمایش داده میشود. برای اینکه آن را یک بار بیشتر استفاده کنیم میتوانیم از TempData.Keep استفاده کنیم.
انتقال اطلاعات بین دو Controller دقیقا مثل انتقال اطلاعات بین دو Action میباشد و کافی است در کنترلر مورد نظر توسط TempData[“Key”] اطلاعات را دریافت کنیم.