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
































استاد سلام
خیلی ممنون از آموزش عالی و قویتون
من یک مشکلی برام پیش اومده و اون هم اینه که بین دو تا اکشن برای من مقدار null بر میگرده
من حتی از TempData.Peek هم استفاده کردم، اما باز هم null میگردونه
فقط اینکه من از ویژوال استودیو ۲۰۲۴ استفاده میکنم. .net8
سلام ممنون از لطفی که دارید.
<code>// اکشن اول
public IActionResult Action1()
{
TempData["MyKey"] = "TestValue";
return RedirectToAction("Action2");
}
// اکشن دوم
public IActionResult Action2()
{
TempData.Keep("MyKey"); // نگه داشتن مقدار
var myValue = TempData["MyKey"];
return View();
}</code>
در صورتی که مشکلتون حل نشد کدهاتون را زیپ کنید و به ایمیل ahadian2@gmail.com ارسال کنید.