آشنایی با 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 اضافی حفظ می‌کند، که این برای سناریوهایی که نیاز است داده‌ها در یک ریدایرکت باقی بماند، ایده‌آل است.
آشنایی با ViewBag و ViewData در ASP.NET CORE

آشنایی با ViewBag و ViewData در ASP.NET CORE

انتقال اطلاعات از 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) دانلود کنید. فایل‌های دانلودی شامل تمام بخش‌های پروژه است و می‌توانید آن را روی سیستم خود اجرا یا تغییر دهید.

سورس کد TempData

مشاهده در آپارات یا یوتیوب

محتوای ویدیویی این صفحه در سایت قابل مشاهده است. اما اگر عادت دارید توی پلتفرم آپارات یا یوتیوب ویدیوها را مشاهده کنید، می‌توانید از دکمه‌های زیر استفاده کنید.

تماشای ویدیوی آشنایی با TempData در ASP.NET CORE در آپارات و یوتیوب

اشتراک‌گذاری با یک کلیک

با یک کلیک، محتوای این صفحه را در شبکه‌های اجتماعی، ایمیل یا پیام‌رسان‌های مورد علاقه‌تان به‌سرعت به اشتراک بگذارید.

اشتراک‌گذاری صفحه آشنایی با TempData در ASP.NET CORE در شبکه‌های اجتماعی

نظرات ارزشمند شما

نظرات شما برای ما ارزشمند است و آنها را میخوانیم و پاسخ میدهیم.

تصویر علیرضا عندلیب

استاد سلام
خیلی ممنون از آموزش عالی و قویتون
من یک مشکلی برام پیش اومده و اون هم اینه که بین دو تا اکشن برای من مقدار 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 ارسال کنید.

فرم افزودن دیدگاه

با ارسال نظرات خود ما را در ایجاد محتوای بهتر کمک کنید.

با خدمات تهران آی تی آشنا شوید

تهران آی تی با افتخار خدمات زیر را ارائه می‌دهد.